Parcel & ESLint
๊ฐ์ ์์ฝ
Parcel
ํน๋ณํ ์ค์ ์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋น๋ ๋๊ตฌ
๋ด๋ถ์ ์ผ๋ก SWC๋ฅผ ์ฌ์ฉํด ๊ธฐ์กด ๋๊ตฌ๋ณด๋ค ๋น ๋ฅด๋ค.
ES Module์ ์ ๊ทน ํ์ฉํ๋ Vite๋ ์์ฒญ ๋น ๋ฆ
๋ฒ๋ค๋ฌ? ๋น๋?
๋ฒ๋ค๋ฌ โ ์ฌ๋ฌ๊ฐ ํ์ผ์ ํ๋์ ํ์ผ๋ก ํฉ์ณ์ฃผ๋ ๋๊ตฌ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์์ ๋์ํ ์ ์๋
HTML
,CSS
,JS
๋ก ๋ณํํ๋ ์ญํ ๊น์ง ํ๋ค. ex) TS -> JS๋ฒ๋ค๋ง โ ํ๋์ ์์์ (entry point)๋ก๋ถํฐ ์์กด์ ์ธ ๋ชจ๋์ ์ ๋ถ ์ฐพ์๋ด์ ํ๋์ ๊ฒฐ๊ณผ๋ฌผ๋ก ๋ฌถ๋(๋ฒ๋ค) ๊ณผ์ ์ ์๋ฏธํ๊ณ ์ด๊ฒ์ ๋น๋๋ผ๊ณ ๋ ํ๋ค.
dist(distribute) Dir
์ค์ ํ๋ก๋ํธ ํ๊ฒฝ์์ ์๋น์ค ๋ ๋น๋๋ ๊ฒฐ๊ณผ์ ์ฝ๋
build ๋ช
๋ น์ด๋ฅผ ํตํด ๋งค๋ฒ ์์ฑ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ node_modules
์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฒฉ์ ์ฅ์์ ์ฌ๋ฆฌ์ง ์๋๋ค.
๋น๋๋ ๊ฒฐ๊ณผ๋ฌผ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ฝ๊ธฐ ์ด๋ ต๊ฒ ๋๋ ํ ๋์ด ์๋ค. ๋๋ ํ๋์์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํด์ํด์ ๋์ํ๊ธฐ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค.
๋๋ ํ๋ฅผ ํ๋ ์ด์
์ค๋ฐ๊ฟ, ๋์ด์ฐ๊ธฐ ๊ฐ์ ์ฌ๋ฐฑ ๊ณต๊ฐ ๋ฐ ๋ณ์๋ช ๋ฑ ๋ถํ์ํ๊ฒ ์ฉ๋์ ์ฐจ์งํ๋ ๋ถ๋ถ์ ์ค์ฌ ์ต์ ํํ๋ ๊ฒ
์ด ๊ณผ์ ์ด ์ผ์ด๋๋ฉด ์ฌ๋์ด ๋ณด๊ธฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ๋์ง๋ง ๋ธ๋ผ์ฐ์ ์์ ๋์์ํค๋๊ฒ ๋ชฉ์ ์ด๋ผ ์๊ด์๋ค
์ค์ ์ด ํ์์๋ค์ง๋ง ์ถ๊ฐํ๋ฉด ์ข์ ์ค์
parcel ๋ฒ๋ค๋ฌ๋ ๋น๋ํ ๋ ๊ฒฐ๊ณผ์ ์ผ๋ก
main
์ต์ ์ ์ํฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐํ์.package.json ํ์ผ์ source ์์ฑ ์ถ๊ฐ. ๋งค๋ฒ ๋ฒ๋ค๋งํ ๋ ์ผ์ผํ ๋์ธ ํ๊ฒ์ ๋ช ์ํ๋ ๊ฒ์ ๊ท์ฐฎ์
npx parcel index.html --port: 8080
parcel-reporter-static-files-copy ํจํค์ง ์ค์น ํ
.parcelrc
ํ์ผ ์์ฑ. ์ด๋ ๊ฒํ๋ฉด static ํด๋์ ํ์ผ์ ์ ์ ํ์ผ๋ก Serving ํ ์ ์๋ค.(์ด๋ฏธ์ง ๋ฑ Assets)
๋น๋ + ์ ์ ์๋ฒ ์คํ
ESLint
๋ฆฐํธ(lint), ๋ฆฐํฐ(linter)๋ ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ํ๋ก๊ทธ๋จ ์ค๋ฅ,๋ฒ๊ทธ,์คํ์ผ ์ค๋ฅ, ์์ฌ์ค๋ฌ์ด ๊ตฌ์กฐ์ฒด์ ํ์(flag)๋ฅผ ๋ฌ์ ๋๊ธฐ ์ํ ๋๊ตฌ๋ค์ ๊ฐ๋ฆฌํจ๋ค.
์ ์ฌ์ฉํ๋?
์คํ์ผ ํต์ผ
์ ์ฌ์ ๋ฌธ์ ๋ฐ๊ฒฌ
๋ฒ ์คํธ ํ๋ ํฐ์ค(์ฝ๋ฉ ์ปจ๋ฒค์ ) ์ถ์ฒ โ ์ต์ ํธ๋ ๋ ํ์ต ํ์ฉ
์ผ๊ด์ฑ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
์ ์ ํ๋ก๊ทธ๋จ ๋ถ์
์ค์ ์คํ ์์ด ์ปดํจํฐ ์ํํธ์จ์ด๋ฅผ ๋ถ์ํ๋ ๊ฒ
๋ฆฐํธ๊ฐ ์ ์ ํ๋ก๊ทธ๋จ ๋ถ์์ ์ํ๋ค.
.vscode/setting.json
ํ์ผ์ ์ถ๊ฐํด JS/TS ํ์ผ์ ์ ์ฅํ ๋๋ง๋ค ESLint๋ฅผ ์คํํ๊ณ ๋ฌธ์ ์ ์ ๊ณ ์น๊ฒ ์ค์ ๊ฐ๋ฅ
์ค์ (์์ฌ Ver)
CLI
ํค์๋
Vite(๋นํธ)
๊ธฐ์กด ๋ฒ๋ค๋ฌ์ ๋๋ฆฐ ๋น๋ ์๋๋ก ์ธํ ๊ฐ๋ฐ ์์ฐ์ฑ ์ ํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Go์ธ์ด ๊ธฐ๋ฐ์ ES Build ํด
Go์ธ์ด๋ก ์์ฑ๋์ด ์์ด ๊ธฐ์กด ๋ฒ๋ค๋ฌ์ ๋น๋ ์๋๋ณด๋ค ๋ง๊ฒ๋ 100๋ฐฐ ์ด์ ๋น ๋ฆ
ES Build๋ ๋น๋๋ง ํด์ฃผ๋ ๋๊ตฌ๋ก ๋น๋ ์ธ ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ค์ ๋์ฒดํ๊ธฐ ํ๋ค์์
ES Build๋ฅผ ์์ฐ๊ธฐ์ ๋๋ฌด ์๊น์ด ์ฐฐ๋์ Vue.js๋ฅผ ๋ง๋
Evan you
๊ฐ ๊ธฐ์กด ๋ฒ๋ค๋ฌ์ ๊ธฐ๋ฅ + ES Build๋ฅผ ๊ฒฐํฉํ ์๋ก์ด ๋ชจ๋ ํด์ ๊ฐ๋ฐํ๊ฒ Vite์ด๋ค.
Lint(๋ฆฐํธ)
lint๋ ๋ณดํธ๋ผ๊ธฐ๋ผ๋ ๋ป ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ์์๋ ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ์ค๋ฅ ๋๋ ๋ฒ๊ทธ๊ฐ ์๋ ์ฝ๋์ ํ์(flag)๋ฅผ ๋ฌ์๋๊ธฐ ์ํ ๋๊ตฌ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ ๋๋ ์ํฐ ํจํด์ ์ฐพ์์ฃผ์ด ์ผ๊ด๋ ์ฝ๋์คํ์ผ์ ์ ์งํ๊ณ ๊ฐ๋ ์ฑ ๋์ ์ฝ๋ ์์ฑ์ ๋ชฉํ๋ก ํ๋ค.
Lint๋?
lint๋ ๋ณดํธ๋ผ๊ธฐ๋ผ๋ ๋ป
๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ ๋๋ ์ํฐ ํจํด์ ์ฐพ์์ฃผ์ด ์ผ๊ด๋ ์ฝ๋์คํ์ผ์ ์ ์งํ๊ณ ๊ฐ๋ ์ฑ ๋์ ์ฝ๋ ์์ฑ์ ๋ชฉํ๋ก ํ๋ค.
.eslintrc
eslint ์ค์ ํ์ผ
eslint๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์ค์ ํ์ผ์ด ๊ผญ ํ์ํ๋ค.
eslint ์คํ
๊ท์น ๋ชฉ๋ก์ค ์ผ์ชฝ์ ๋ ์น ํ์๊ฐ ๋ถ์ ๊ฒ์ด
--fix
์ต์ ์ผ๋ก ์๋ ์์ ์ด ๊ฐ๋ฅํ ๊ฒ
Rules
ESLint๋ ์ฝ๋ ๊ฒ์ฌ ๊ท์น์ ๋ฏธ๋ฆฌ ์ ํด ๋์
ESLint ์ค์ ํ์ผ(.eslintrc.js)์ ๊ท์น์ ์์ฑ
๊ท์น์ ์ค์ ํ๋ ๊ฐ์ 3๊ฐ์ง ("off" or 0, "warn" ๋๋ 1, "error" ๋๋ 2)
Extensible Config
๊ท์น์ ์ฌ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ์ ํด ๋์ ๊ฒ์ด
eslint:recommended
๊ท์น ๋ชฉ๋ก์ค ์ผ์ชฝ์ ์ฒดํฌ ํ์๋์ด ์๋ ๊ฒ์ด ์ด ์ค์ ์์ ํ์ฑํ ๋์๋ ๊ท์น๋ค
๊ทธ ์ธ ๊ท์น (airbnb)
airbnb: airbnb ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด๋ ๊ท์น ๋ชจ์
eslint-config-airbnb-base ํจํค์ง๋ก ์ ๊ณต
git hooks
git commit ๋๋ git push์ ๊ฐ์ git ์ด๋ฒคํธ๊ฐ ์ผ์ด๋๊ธฐ ์ ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ํด์ git ์ด๋ฒคํธ ์ฌ์ด์ ๊ฐ๊ณ ๋ฆฌ(hook)๋ฅผ ๊ฑธ์ด์ฃผ๋ ๊ฒ
๊น ์ปค๋งจ๋ ์คํ ์์ ์ ๋ผ์ฌ๋ค์ ์๋ ํ ์ ์ ๊ณต
husky
์lint-staged
๋ฅผ ํ์ฉํ๋ฉด ์ปค๋ฐ์ ํธ์ํ๊ธฐ ์ ์ ๋ฆฐํธ ๊ฒ์ฌ๋ฅผ ์ํ์ฆ, ์ปค๋ฐ ํน์ ๋ฆฌ๋ชจํธ ํธ์ ์ง์ ์ ๋ฆฐํธ ๊ฒ์ฌ๋ฅผ ํ์ฌ ๊ฒ์ฌ๋ฅผ ํต๊ณผํด์ผ๋ง ํธ์๋ฅผ ํ์ฉํ๋ ๋ฐฉ์
Install
husky
git hook ๋์์ ๋ํ ์ ์๋ฅผ .git ํ์ผ์ด ์๋ .husky ์์ ๊ด๋ฆฌํ์ฌ repository์์ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋๋ก ํจ
.git ํ์ผ์ ์ ์ด์ .gitignore์ ๋ฑ๋ก๋์ด ์๊ณ ๋ฐฐํฌ์ ์ ์ด๋ค ๋์์ ํ๋ ค๋๊ฒ์ด ์ฝ๋์๋ ์ ์ฉ์ด ์๋ ์ ์์ด์ .husky์์ ๊ด๋ฆฌ ํ์.
lint-staged
git staged ์ํ์ ํ์ผ๋ค๋ง ๋ญ๊ฐ๋ฅผ ํ ์ ์๊ฒ ํด์ค๋ค.
Last updated