React 응용 프로그램의 ESlint 및 Prettier(보너스-Next.js 및 TypeScript)
본고는ReactJS를 중점적으로 소개하고 TypeScript가 있는NextJS를 깊이 연구할 것이다. 그러나 이러한 도구는 보통 JavaScript나 TypeScript 코드 라이브러리에 적용되며 모든 JavaScript 프로젝트에 적용될 수 있다. 더욱 아름다운 것은 HTML, CSS,SCS/SASS,Markdown,JSON,YAML,GraphQL,양식화 구성 요소와 many more!!! 등 다른 언어에 대해 자동 포맷할 수 있다는 것이다.
메모
Eslint와 Prettier는 서로 독립적으로 실행할 수 있는 두 개의 독립된 도구이지만, 우리는 매우 유용한 Eslint 플러그인을 이용하여 그것들을 결합시켜 최소한의 설정으로 최대의 효과를 얻을 것이다.
에스린트
우선 내가 에스린트에 대해 이야기할게.이것은 정적 코드 분석기입니다. 이것은 개발 과정에서 발생할 수 있는 오류를 알려 줍니다.
이 가능하다, ~할 수 있다,...
}
끝 함수 성명.return
문장 뒤에 쓴 코드.더욱 아름답다
Prettier는 코드 포맷 프로그램입니다. 코드의 외관에만 관심을 가지고 있습니다. 프로젝트 전체의 축소가 일치하는지 확인하시겠습니까?
항목에 분호가 없는지 확인하시겠습니까?당신의 약속 체인이 완전히 일치하고 읽을 수 있도록 할까요?포맷 스타일에 대한 팀의 불일치가 아니라 프로젝트 전체에 Prettier를 사용할 수 있습니다. 이 모든 것을 Prettier에 남겨서 해결할 수 있습니다.
개시하다
npm
및 Node.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
의 타자 스크립트와 다음 단계의 모습입니다.jsmodule.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
Reference
이 문제에 관하여(React 응용 프로그램의 ESlint 및 Prettier(보너스-Next.js 및 TypeScript)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/heyitsarpit/eslint-and-prettier-for-react-apps-bonus-next-js-and-typescript-3e46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)