[๋ฆฌ์กํธ ์ฝ๋ ์ปจ๋ฒค์ ] ESLint, Prettier, airbnb style guide๋ก ์ค์ ํ๊ธฐ
ESLint
๊ฐ๋จํ ๋งํ์๋ฉด ์์ค์ฝ๋๋ฅผ ๋ถ์ํด ์๋ฌ ๋ฐ ๋ฒ๊ทธ๋ฅผ ๋ณด๊ณ ํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค.
Prettier
๋ณธ๋ ์คํ์ผ ๋์ ๊ท์น์ ์ ํด ๊ท์น๋๋ก ๋ค์ ์์ฑํด ์ฃผ๋ ๊ฒ์ ๋๋ค.
์ข์ ์ฝ๋ ์ปจ๋ฒค์ ์ ์งํค๊ธฐ ์ํด ํ ๋ฒ ์ ์ฉํด๋ด ์๋ค.
์ฐ์ vscode์ ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ESLint, Prettier ๋ ๊ฐ๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
CRA๋ฅผ ์ด์ฉํด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํ๊ณ ์งํํ๊ฒ ์ต๋๋ค.
Prettier
๋ฃจํธ ๋๋ ํฐ๋ฆฌ(์ต์์ ๋๋ ํฐ๋ฆฌ)์. prettierrc ํ์ผ์ ๋ง๋ญ๋๋ค.
.prettierrc
{
"trailingComma": "all",
// es5 => ํจ์,๊ฐ์ฒด ์ฌ์ฉ์ ์ผํ, none => ์ผํ x, "all" ํจ์ ์ฌ์ฉ, ์ธ์ ์ ๋ฌ์์๋ ์ผํ
"tabWidth": 2,
// ํญ ์ฌ์ด์ฆ ์ง์
"semi": true,
// ์ธ๋ฏธํด๋ก ์ ์ฌ์ฉํ ์ง ๋ง์ง
"singleQuote": true
// ๋ฌธ์์ด ์
๋ ฅ์ "", '' ๋ ์ค ๋ญ๋ก ํ ์ง
}
์ด๊ฑด ๊ฐ์ธ์ ์ฑํฅ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฏ๋ก
https://prettier.io/docs/en/configuration.html ํด๋น ํ์ด์ง์์ ์ ๋ง์ ๋ง๊ฒ ์ค์ ํ์๊ธฐ ๋ฐ๋๋๋ค.
(ํ์๊ณผ ํ์ ํ ์ ๊ฐ์ด ๋ง์ถฐ์ฃผ๋ ๊ฒ ์ข๊ฒ ์ฃ ?)
๊ทธ ํ vscode ์ค์ ์ ๋ค์ด๊ฐ์ผ ํฉ๋๋ค.
Windows: Ctrl + , ์ธ ํค๋ฅผ ํจ๊ป ๋๋ฅธ๋ค.
Mac: Cmd + , ์ธ ํค๋ฅผ ํจ๊ป ๋๋ฅธ๋ค.
๋ค์ด๊ฐ์ format on save ๊ฒ์ ํ ์ฒดํฌ๊ฐ ๋์ด์๋์ง ํ์ธํฉ๋๋ค!
์ฌ๊ธฐ๊น์ง ํ์ผ๋ฉด ์์ ์ง์ ํ ๋๋ก ์ ์ฅํ ๋๋ง๋ค ์์ ๋๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
ESLint
$ yarn add eslint-config-airbnb
$ yarn add eslint-config-prettier
ํฐ๋ฏธ๋์ ๋ ๋ช ๋ น์ด๋ก ์ค์น๋ฅผ ์งํํฉ๋๋ค.
๊ทธ ํ package.json์ ๋ค์ด๊ฐ "eslintConfig"๋ฅผ ์๋ ๋ด์ฉ์ผ๋ก ์์ ํด์ค๋๋ค.
"eslintConfig": {
"extends": [
"react-app",
"airbnb",
"prettier"
],
"rules": {
"react/jsx-filename-extension": 0, // ๋ฆฌ์กํธ ํ์ผ์ ํ์ฅ์ .jsx๊ฐ ์๋ .js ํ์ฉ
"no-unused-vars": 1 // ํฐ ๋ฌธ์ ์๋ ๊ฒฝ๊ณ ์์ค์ ์ด๋ก์์ผ๋ก
}
},
์ด์ airbnb ๋ฒ ์ด์ค์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค. ๋ค๋ค ์ข์ ์ฝ๋ ์์ฑํ์๊ธธ ๋ฐ๋๋๋ค!