eslint๋ ์ฝ๋๋ฅผ ์คํํ์ง ์์๋ ์ ์ ๋ถ์์ ํตํด ๋ฌธ๋ฒ์ ์๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
prettier๋ ์ผ๊ด์ฑ์๋ ์ฝ๋๋ฅผ ์์ํ ์ ์๊ฒ ํฌ๋ฉงํ ์์ผ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
ํฐ๋ฏธ๋์ npm i -D eslint
๋ฅผ ์
๋ ฅํด ์ค์นํด์ค๋๋ค.
prettier ์ฌ์ดํธ์ ์ ์ํด Docs - install ํ์ด์ง์์ ์ค์น ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ ์
๋ ฅํด์ค๋๋ค. ๋ค์์ผ๋ก npm i -D eslint-config-prettier eslint-plugin-prettier
๋๊ฐ์ง ํจํค์ง๋ฅผ ์ค์นํด ์ค๋๋ค.
eslint config prettier๋ prettier์ ๊ฒน์ณ์ ์ถฉ๋์ด ๋๋ ํฌ๋ฉง์ ๋นํ์ฑํ ํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
eslint plugin prettier๋ eslint์ prettier ํฌ๋ฉง ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ฃผ๋ ์ญํ ์ ํด์ฃผ๋ ํจํค์ง์ ๋๋ค.
eslint ์ค์ ํ์ผ์ ์ด๊ธฐํ ํด์ฃผ๊ธฐ ์ํด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ค๋๋ค. npx eslint --init
๋ค์ ์ค์ ๊ฐ์ ์์๋๋ก ์ ํํด์ฃผ๋ฉด ๋ฉ๋๋ค.
To check syntax and find problems
JavaScript modules
None of these
No
Browser
JSON
์ ํ์ ๋ง์น๋ฉด eslintrc.json ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ํด๋น ํ์ผ์ extends ๋ถ๋ถ์ ์๊น ์ค์นํ๋ ํจํค์ง๋ฅผ ์ค์ ํด์ฃผ๊ณ , rules ๋ถ๋ถ์๋ ์๋์ ๊ฐ์ ์ ๋ ฅํด์ค๋๋ค.
"extends": ["eslint:recommended", "plugin:prettier/recommend"],
"rules": {
"prettier/prettier": "error"
}
eslint๋ ์ฌ๋ฌ๊ฐ์ ์คํ์ผ์ด ์๋๋ฐ, eslint airbnb ๋๋ eslint google ๋ฑ์ ๊ฒ์ํด์ ์ํ๋ ์คํ์ผ์ ์ค์นํ๊ณ extends์์ ์ฒซ๋ฒ์งธ ๊ฐ์ ์ง์ฐ๊ณ ์ค์นํ์ ์คํ์ผ์ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
"extends": ["eslint-config-airbnb", "plugin:prettier/recommend"],
eslint ๋ฅผ ์ ์ฉํ๊ณ ์ถ์ง ์์ ํ์ผ๋ค์ด ์๋ค๋ฉด .eslintignore ํ์ผ์ ์์ฑํ ๋ค ํด๋น ํ์ผ๋ค์ ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
/node_modules
/dist
webpack.config.js
๋ค์์ผ๋ก๋ prettier๋ฅผ ์ค์ ํด์ฃผ๋ .prettierrc.json ํ์ผ์ ์์ฑํด์ค๋๋ค. prettier ์ฌ์ดํธ์ Playground ํ์ด์ง์์ ๋ฉ๋ด์์ ์ฌ๋ฌ๊ฐ์ง prettier ๋ฃฐ๋ค์ ์ค์ ํ๊ณ ํ๋จ์ json ๊ฐ์ ๋ณต์ฌํ์ฌ ๊ฐ์ ธ์์ค๋๋ค.
Docs - Configuring Prettier - Options์์ ์ฌ๋ฌ๊ฐ์ง ๋ฃฐ๋ค์ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ฆฌํฐ์ด๊ฐ ์ค์ ๋์ง ์๊ธธ ์ํ๋ ํ์ผ๋ค์ ์ค์ ํด ์ค .prettierignore ํ์ผ์ ์์ฑํ๊ณ , ํ์ผ์์ ๋ด์ฉ์ ์ ๋ ฅํด ์ค๋๋ค.
/node_modules
/dist
webpack.config.js
๋ง์ง๋ง์ผ๋ก VScode ํ์ฅ์์์ eslint์ Prettier - Code formatter๋ฅผ ์ค์นํด์ค๋๋ค. VScode์์ Open Workspace settings ๊ฒ์ํ settings.json ํ์ผ์ ์ด์ด์ค ๋ค ํ์ผ์ ์ ์ฅํ ๋๋ eslint ํฌ๋ฉง๋๋ก ์ ์ฅ๋ ์ ์๋๋ก ์๋์ ๊ฐ์ด ์ค์ ๊ฐ์ ์์ฑํด ์ค๋๋ค.
{
"eslint.trace.server": "off",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
์ฐธ๊ณ ์ฌ์ดํธ