yarn add create-react-app <project-name> --template typescript
"eslintConfig": {
"extends":[
"react-app",
"react-app/jest"
]
}
// Airbnb config 사용하는 경우(v7)
npm install eslint@7 --save-dev
// 그 외(최신 버전 설치)
npm install eslint --save-dev
yarn ass eslint --init
설정을 위한 질문이 나오면 아래와 같이 선택한다.
How would you like to use ESLint?
Select: To check syntax, find problems, and enforce code style
What type of modules does your project use?
Select: JavaScript modules (import/export)
Which framework does your project use?
Select: React
Does your project use TypeScript?
Select: Yes
Where does your code run?
Select: Browser
How would you like to define a style for your project?
Select: Use a popular style guide
Which style guide do you want to follow? ⭐️
Select: Airbnb: https://github.com/airbnb/javascript
What format do you want your config file to be in?
Select: JSON
Would you like to install them now with npm?
Select: Yes
yarn add eslint src/* --fix
yarn add install --save-dev --save-exact prettier
{
"trailingComma": "es5",
"tabWidth": 4,
"semi": false,
"singleQuote": true
}
node_modules
# Ignore artifacts:
build
coverage
yarn add prettier --write .
yarn add install --save-dev eslint-config-prettier
"extends":[
...
"prettier",
"prettier/prettier",
"prettier/react",
"prettier/@typescript-eslint"
]
ESLint 실행 시 아래와 같은 오류가 난다면...
오류 메세지에 제시된 링크로 들어가 보자. 여러 config가 "prettier"로 통합되었다는 것을 알 수 있었다. 따라서 문서를 참고하여 ❌ 표시된 것을 삭제한다.
"extends": [
"plugin:react/recommended",
"airbnb",
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/prettier",
"prettier/react", ❌
"prettier/@typescript-eslint", ❌
"plugin:prettier/recommended"
],
yarn add install --save-dev eslint-plugin-prettier
"extends":[
...
"plugin:prettier/recommended"
]
아직 자동 실행 설정 전이므로 명령어를 통해 ESLint가 정상적으로 실행되는지 확인한다.
yarn add eslint src/App.tsx --quiet --fix
파일 저장 시 ESLint와 Prettier를 실행하여 자동 수정되게 하기 위한 과정이다.
{
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true,
"eslint.alwaysShowStatus": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
}