React 응용 프로그램의 ESlint 및 Prettier(보너스-Next.js 및 TypeScript)

프로그램을 실행하기 전에 버그를 포착하고 복구할 수 있다면요?만약 전체 프로젝트에서 같은 문법을 가지고 같은 준칙을 따르는 코드를 작성할 수 있다면.만약 당신의 모든 개발진이 이 점을 해낼 수 있다면 아무런 번거로움도 없을 것이다.너무 좋아 보이죠?이것은 ESlint과 Prettier라는 신기한 도구를 통해 이루어진 것이다.이러한 도구를 JavaScript 또는 TypeScript 프로젝트에 추가하여 코드 품질과 일관성을 높이는 방법에 대해 알아봅니다.
본고는ReactJS를 중점적으로 소개하고 TypeScript가 있는NextJS를 깊이 연구할 것이다. 그러나 이러한 도구는 보통 JavaScript나 TypeScript 코드 라이브러리에 적용되며 모든 JavaScript 프로젝트에 적용될 수 있다. 더욱 아름다운 것은 HTML, CSS,SCS/SASS,Markdown,JSON,YAML,GraphQL,양식화 구성 요소와 many more!!! 등 다른 언어에 대해 자동 포맷할 수 있다는 것이다.
메모
Eslint와 Prettier는 서로 독립적으로 실행할 수 있는 두 개의 독립된 도구이지만, 우리는 매우 유용한 Eslint 플러그인을 이용하여 그것들을 결합시켜 최소한의 설정으로 최대의 효과를 얻을 것이다.

에스린트


우선 내가 에스린트에 대해 이야기할게.이것은 정적 코드 분석기입니다. 이것은 개발 과정에서 발생할 수 있는 오류를 알려 줍니다.
이 가능하다, ~할 수 있다,...
  • 간단한 문법 오류, 예를 들어 사용하지 않은 } 끝 함수 성명.
  • 사코드 검출, 예를 들어 사용하지 않은 변수, return 문장 뒤에 쓴 코드.
  • Airbnb styled guide 또는 Google style guide 등 사용자가 정의한 규칙 또는 미리 정의된 표준의 조합을 위반한 경우

  • 더욱 아름답다


    Prettier는 코드 포맷 프로그램입니다. 코드의 외관에만 관심을 가지고 있습니다. 프로젝트 전체의 축소가 일치하는지 확인하시겠습니까?
    항목에 분호가 없는지 확인하시겠습니까?당신의 약속 체인이 완전히 일치하고 읽을 수 있도록 할까요?포맷 스타일에 대한 팀의 불일치가 아니라 프로젝트 전체에 Prettier를 사용할 수 있습니다. 이 모든 것을 Prettier에 남겨서 해결할 수 있습니다.

    개시하다

    npmNode.js가 설치되어 있는지 확인합니다.
    ESlint에 devdependences를 설치합니다.
    npm i -D eslint \                       # Eslint itself
             prettier \                     # Prettier itself
             eslint-plugin-react \          # Eslint plugin for react
             eslint-plugin-react-hooks \    # Eslint plugin for react hooks, helps you write modern functional react components
             eslint-config-prettier \       # Eslint config for prettier, it will extend the style guide to match prettier
             eslint-plugin-prettier \       # Eslint plugin for prettier, it will raise eslint errors about formatting
             eslint-plugin-jsx-a11y         # Eslint plugin to raise accessibility violation errors
    
    메모
    create react 프로그램을 사용하고 있다면, Eslint를 설치했습니다. 다른 플러그인 등을 설치하기만 하면 됩니다.
    프로파일 만들기 -
    touch .eslintrc.js .prettierrc
    

    에스린트와프레티리 그노르 호텔


    eslint와prettier가 특정한 파일과 폴더를 겨냥하지 않도록 하기 위해 이 파일들이 필요합니다
    touch .eslintignore .prettierignore
    
    다음 내용을 두 파일에 추가하기만 하면 된다
    node_modules
    
    또는 .gitignore 파일을 무시 경로로만 사용하려면 ESlint를 실행할 때 로고를 사용해서 전달할 수 있습니다
    예컨대
    eslint --fix . --ignore-path ./.gitignore
    
    이제 우리 설정을 채워보자-

    prettierrc씨


    이것은 내가 prettier를 위한 설정입니다 -
    {
        "semi": true,
        "tabWidth": 4,
        "printWidth": 100,
        "singleQuote": true,
        "trailingComma": "none",
        "jsxBracketSameLine": true
    }
    

    에스린트씨.js


    이것은 eslint의 기본 설정입니다. 우리는 멋진 플러그인으로 그것을 더욱 확장할 수 있습니다.
    module.exports = {
        root: true,                 // Make sure eslint picks up the config at the root of the directory
        parserOptions: {
            ecmaVersion: 2020,      // Use the latest ecmascript standard
            sourceType: 'module',   // Allows using import/export statements
            ecmaFeatures: {
                jsx: true           // Enable JSX since we're using React
            }
        },
        settings: {
            react: {
                version: 'detect'   // Automatically detect the react version
            }
        },
        env: {
            browser: true,          // Enables browser globals like window and document
            amd: true,              // Enables require() and define() as global variables as per the amd spec.
            node: true              // Enables Node.js global variables and Node.js scoping.
        },
        extends: [
            'eslint:recommended',
            'plugin:react/recommended',
            'plugin:jsx-a11y/recommended',
            'plugin:prettier/recommended' // Make this the last element so prettier config overrides other formatting rules
        ],
        rules: {
            'prettier/prettier': ['error', {}, { usePrettierrc: true }]  // Use our .prettierrc file as source
        }
    };
    

    ESlint 실행


    스크립트를 package.json 파일에 추가해야 합니다.
      "scripts": {
        "lint": "eslint --fix .",
        "format": "prettier --write './**/*.{js,jsx,ts,tsx,css,md,json}' --config ./.prettierrc"
      },
    
    지금 바로 뛰세요.
    npm run lint
    

    다음 목표.js



    Eslint를 Next와 함께 사용할 수 있습니다.js는 너무 많은 변경이 필요 없습니다. 두 가지 규칙을 추가할 것입니다-JSX 코드를 작성할 때 다음 단계부터 상하문에서 반응하는 수요를 처리하는 데 사용됩니다.js는 이런 거 필요 없어요.
    플러그인으로 인한 접근성 관련 오류를 처리하는 데 사용합니다.
    다음.js 우리는 jsx-a11y 구성 요소 포장 Link 라벨을 사용합니다.우리는 <a></a> 속성을 href에 전달하지 않고 이를 프로필로 전달<a></a>에 전달했다.이것은 매우 흔히 볼 수 있는 접근 가능한 문제를 일으켰다. 즉, Link 닻이 없는 것이다. 우리는 어떠한 eslint 오류도 발생하기를 원하지 않기 때문에, 우리는 이런 상황을 처리하는 방법을 찾아야 한다.
    사용자 정의 규칙을 추가하려면 href로 이동하십시오.
    {
        rules: {
            'react/react-in-jsx-scope': 'off',
            'jsx-a11y/anchor-is-valid': [
                'error',
                {
                    components: ['Link'],
                    specialLink: ['hrefLeft', 'hrefRight'],
                    aspects: ['invalidHref', 'preferButton']
                }
            ]
        }
    }
    

    대상 유형 스크립트



    TypeScript의 경우 devdependency를 보완해야 합니다.
    npm i -D @typescript-eslint/eslint-plugin \     # For extending our rules to work with prettier
             @typescript-eslint/parser              # To enable eslint to parse typescript code
    
    지금 우리는 .eslint.js 파일을 수정해야 한다 -
    typescript 코드 해석을 처리하기 위해 설정에 최고급 속성을 추가합니다
    module.exports = {
        parser: '@typescript-eslint/parser'
    };
    
    다음 새 항목을 .eslintrc.js 그룹에 추가합니다.
    {
        extends: [
            'plugin:@typescript-eslint/eslint-recommended',
            'plugin:@typescript-eslint/recommended',
            'prettier/@typescript-eslint',
        ]
    }
    

    마침내


    이것이 바로 당신extends의 타자 스크립트와 다음 단계의 모습입니다.js
    module.exports = {
        root: true,
        parser: '@typescript-eslint/parser',
        parserOptions: {
            ecmaVersion: 2020,
            sourceType: 'module',
            ecmaFeatures: {
                jsx: true
            }
        },
        settings: {
            react: {
                version: 'detect'
            }
        },
        env: {
            browser: true,
            amd: true,
            node: true
        },
        extends: [
            'eslint:recommended',
            'plugin:@typescript-eslint/eslint-recommended',
            'plugin:@typescript-eslint/recommended',
            'plugin:react/recommended',
            'plugin:jsx-a11y/recommended',
            'prettier/@typescript-eslint',
            'plugin:prettier/recommended'   // Make sure this is always the last element in the array.
        ],
        rules: {
            'prettier/prettier': ['error', {}, { usePrettierrc: true }],
            'react/react-in-jsx-scope': 'off',
            'react/prop-types': 'off',
            '@typescript-eslint/explicit-function-return-type': 'off',
            'simple-import-sort/sort': 'error',
            'jsx-a11y/anchor-is-valid': [
                'error',
                {
                    components: ['Link'],
                    specialLink: ['hrefLeft', 'hrefRight'],
                    aspects: ['invalidHref', 'preferButton']
                }
            ]
        }
    };
    

    상금 내용


    eslint 플러그인 간단한 가져오기 정렬


    너는 수입 성명의 순서를 걱정하고 있다는 것을 발견했니?이 모든 것을 걱정할 수 있는 해결 방안이 있습니다.
    npm i -D eslint-plugin-simple-import-sort
    
    이전 -
    에서

    이 플러그인을 사용하려면 .eslintrc.js 파일을 업데이트합니다.최상위 레벨 속성.eslintrc.js을 추가합니다.
    module.exports = {
        plugins: ['simple-import-sort']
    };
    

    하스키+코튼


    코드가 포맷되고 linting 오류가 없는지 확인하기 위해서, 매번 실행해야 합니다 plugins.우리는 반드시 어떤 방식으로 자동화를 실현할 수 있어야 한다.
    가자-
    npm i -D husky \        # A tool for adding a pre-commit hook to git, It will run a certain command every time you commit
             lint-staged    # A tool for running a certain list of commands over files that staged for committing in git
    
    현재 npm run lint 에 다음 내용을 추가합니다.
    {
      "husky": {
        "hooks": {
          "pre-commit": "lint-staged"
        }
      },
      "lint-staged": {
        "./**/*.{js,jsx,ts,tsx}": [
          "eslint --fix",
        ]
      }
    }
    

    결론


    새로운 걸 배웠으면 좋겠어.Eslint는 사용자 정의가 끝이 없습니다. 프로젝트에 가장 유리한 플러그인과 설정을 찾기 위해 더 많은 것을 찾아야 합니다.
    모든 코드 세션을 여기에서 찾을 수 있습니다 Gist on GitHub
  • 좋은 웹페이지 즐겨찾기