CodeSquad๐นDay 6
ESLint ์๋ฌ ์ก๊ธฐ
โWhat is ESLint?
- ์์ฑํ JS ์ฝ๋๊ฐ EcmaScript ์ฌ๋จ์์ ๋ช
์ํ Specification์ ๋ถํฉํ๋์ง ๊ฒ์ฌํ๋ ํด
- ๊ทธ๋์ ES(EcmaScript) + Lint(์๋ฌ๊ฐ ์๋ ์ฝ๋์ ํ์๋ฌ์์ฃผ๋ ๊ฒ)
- ์ฝ๋์ ํน์ ์คํ์ผ, ๊ท์น์ ์ ์ฉํด์ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ์ฐพ๊ณ ํจํด์ ์ ์ฉ์ํฌ ์ ์๋ ์ ์ ๋ถ์ ํด
- ์ฝ๋ฉ ์คํ์ผ์ ์ง์ ์ ํ ์๋ ์์
๐ฑProblems
- .eslintrc์ extends์ "prettier/@typescript-eslint", ๋ฅผ ๋ฃ์ด์คฌ์ ๊ฒฝ์ฐ ์๋ฌ๋ฅผ ์ก์์ฃผ์ง ๋ชปํ๊ณ ์๋ค. ์ด ์ต์ ์ ์ ๊ฑฐํด์ผ ์๋ฌ๊ฐ ๋จ๊ฒ ๋๋ค.
์๋ํด ๋ณธ ๋ฐฉ๋ฒ๋ค
- plugin์ prettier๊ฐ ์์ด์ ์ถ๊ฐํด ๋ณด์๋ค.
- "prettier/prettier": ["error", {}, { "usePrettierrc": true }], ๋ rules์ ์ถ๊ฐํด ๋ณด์๋ค.
โ ํด๊ฒฐ๋ ๋ฐฉ๋ฒ
- "prettier/@typescript-eslint" ๋ “prettier” ์์ ์ ๊ฑฐ๋ ๊ฒ์ด๋ผ์ ๊ทธ๋ฅ ์ ๊ฑฐ๋ฅผ ํ๋ผ๊ณ ํ๋ค.
โ๊ถ๊ธํ ์ - extends ๋ฐฐ์ด ๋ด๋ถ element์ ์์
- ์ ๊ธ์์๋ prettier๊ฐ extends์ ๋งจ ๋ง์ง๋ง์ ์์ผ ํ๋ค๊ณ ๋์ด ์๋ค.
- โ์์๊ฐ ์ด๋ค ์์ผ๋ก ์ํฅ์ ๋ฏธ์น๋๊ฑด์ง?
- Make sure it’s the last item on the list so it can override other settings.
- โ์์๊ฐ ์ด๋ค ์์ผ๋ก ์ํฅ์ ๋ฏธ์น๋๊ฑด์ง?
How to Set Up Airbnb Style Guide for React Projects
โจ์๋ฌ ํด๊ฒฐํ๊ธฐ
โ 1. Missing file extension for …
- ํ์ผ์ ์ต์คํ ์ ์ด ์๋ค๊ณ ๋์จ๋ค
- ์ถ๊ฐ ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ : ํ์ฌ extends์ plugin์ ๋ณด๋ฉด
- "plugin:import/errors", "plugin:import/warnings", "plugin:import/typescript", ์ด ์ธ๊ฐ๊ฐ ์๋๋ฐ "plugin:import/recommended", ์ด๊ฑฐ ํ๋๋ก ํ์น ์ ์์๊น?
"settings": {
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
}
"react/jsx-filename-extension": ["warn", { "extensions": [".tsx"] }],
- setting ์ด ๋ ๋ฐ๋ก ๋์ด ์์ด์ผ ํ๋ ๋ฏํ๋ค
- import/extensions๊ฐ ์๊ณ import/resolver๊ฐ ์๋๋ฐ ๋ญ ์จ์ผ ํ ๊น
[Solved] eslint plugin import [import/extensions] Missing file extension after upgrade to v2.19.1
โ 2. ‘React’ must be in scope when using JSX
"plugin:react/jsx-runtime", extends์ ์ถ๊ฐํด์ ํด๊ฒฐ
eslint-plugin-react/react-in-jsx-scope.md at master · jsx-eslint/eslint-plugin-react
โ 3. Function component is not a function declaration
- ํจ์๋ฅผ const ๋ก ์ฐ๋๊น ์๋ฌ๋จ. ์ ์ฅํ๋๊น function์ผ๋ก ๋ฐ๋
- rules์ ์๋ ์ถ๊ฐํ์ฌ ํด๊ฒฐ
"react/function-component-definition": [
2,
{
namedComponents: "arrow-function",
unnamedComponents: "arrow-function",
},
],
Struggling with TypeScript, React, Eslint and simple Arrow Functions components
โ 4. Prefer default export
export const theme = {
color,
fontSize,
fontWeight,
};
- ์์ ๊ฐ์ด ์์ฑํ์ ๋ ์๋ฌ ๋ฐ์
- "import/prefer-default-export": "off” ์ถ๊ฐํ์ฌ ํด๊ฒฐ
Reference
'What I learned > CodeSquad Log' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CodeSquad Day 102 : Project 4 (0) | 2022.06.08 |
---|---|
CodeSquad Day 101 : Project 4 (0) | 2022.06.06 |
CodeSquad Day 92 : Project 4 - Day 2 (0) | 2022.05.25 |
CodeSquad Day 91 : Project 4 - Day 1 (0) | 2022.05.25 |
CodeSquad Day 90 : Project 3 - Day 10 (0) | 2022.05.20 |