npm install -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser
npx install-peerdeps --dev eslint-config-airbnb
=> eslint-plugin-(import, react, react-hooks, jsx-ally)설치
(eslint-config-airbnb
는 react 관련규칙을 포함하고,eslint-config-airbnb-base
는 포함하지 않는다)
env
parser
@typescript-eslint/parser
는 Typescript의 구문 분석을 합니다.plugin
extends
globals
parserOptions
rules
settings
.eslintrc
파일을 ESLint 적용을 원하는 프로젝트의 root 경로에 생성(FE or BE 폴더){
"env": {
"browser": true,
"es6": true,
"node": true
},
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint","import"],
"extends": [
"airbnb",
"airbnb/hooks",
"prettier/react",
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint",
"plugin:prettier/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"linebreak-style": 0,
"import/no-dynamic-require": 0,
"import/no-unresolved": 0,
"import/prefer-default-export": 0,
"global-require": 0,
"import/no-extraneous-dependencies": 0,
"jsx-quotes": ["error", "prefer-single"],
"react/jsx-props-no-spreading": 0,
"react/forbid-prop-types": 0,
"react/jsx-filename-extension": [2, { "extensions": [".js", ".jsx", ".ts", ".tsx"] }],
"import/extensions": 0,
"no-use-before-define": 0,
"@typescript-eslint/no-empty-interface": 0,
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/no-var-requires": 0,
"no-shadow": "off",
"react/prop-types": 0,
"no-empty-pattern": 0,
"no-alert": 0,
"react-hooks/exhaustive-deps": 0
},
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx", ".js"]
},
"import/resolver": {
"typescript": "./tsconfig.json"
}
}
}
.eslintrc 와 똑같이 적용되길 원하는 프로젝트의 디렉토리에
.prettierc
파일을 만들어준다.
{
"parser": "typescript",
"singleQuote": true,
"printWidth": 110,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"quoteProps": "as-needed",
"jsxSingleQuote": true,
"trailingComma": "all",
"arrowParens": "always",
"endOfLine": "auto",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"requirePragma": false,
"insertPragma": false,
"proseWrap": "preserve",
"vueIndentScriptAndStyle": false
}
file
-> default setting
-> setting
-> "default formatter" 검색 -> esbenp.prettier-vscode
를 선택 -> VSCode 재부팅
깔끔한 정리네요!!