๐Ÿ’ป ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ - eslint, prettier

์ดํ˜œ๋ž€ยท2023๋…„ 1์›” 15์ผ
1

๊ธฐํƒ€ ์ž๋ฃŒ ๊ณต์œ 

๋ชฉ๋ก ๋ณด๊ธฐ
4/7
post-thumbnail

eslint๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์•„๋„ ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ๋ฌธ๋ฒ•์  ์—๋Ÿฌ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
prettier๋Š” ์ผ๊ด€์„ฑ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํฌ๋ฉงํ™” ์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ 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
  }
}

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

0๊ฐœ์˜ ๋Œ“๊ธ€