5.Parcel & ESLint

Parcel

ํ˜„์žฌ ๋‚˜๋Š” ํšŒ์‚ฌ์—์„œ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์œผ๋กœ webpack์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค. 1์ฃผ์ฐจ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์ด๊ณณ์—์„œ parcel์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์™œ parcel์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด์„œ ๊ฒ€์ƒ‰ํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŠน์ง•์žˆ๋Š” ๋ถ€๋ถ„๋งŒ ์š”์•ฝํ•˜์˜€๋‹ค.

Parcel์€ ์„ค์ •์ด ํ•„์š”์—†๋Š” zero-configuration ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ํ•™์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

Webpack์— ๋น„ํ•˜๋ฉด ์ด ๋ถ€๋ถ„์€ ํฐ ์žฅ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. Webpack์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ผ๋ถ€ ์„ค์ •์„ ๊ฑด๋“œ๋ ค์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ฐœ์ƒ ํ–ˆ์„ ๋•Œ Webpack ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์ž˜ ๋˜์–ด์žˆ์ง€๋งŒ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์„ค์ • ํŒŒ์•…๊ณผ ํ•จ๊ป˜ ์จ์•ผ ํ•˜๋Š” plugin ์ข…๋ฅ˜๋„ ๋งŽ๊ณ  ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ–ˆ์–ด๋„ ๋‚ด ์ดํ•ด์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด์„œ ์ž˜ ๋ชป ์„ค์ •ํ•œ ๋ถ€๋ถ„๋„ ์žˆ์—ˆ๋˜ ํ„ฐ๋ผ Parcel์˜ ์„ค์ •์ด ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์€ ์ •๋ง ๋งค๋ ฅ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

Transformations

  • Parcel์€ zero-configuration ํŠน์ง•์œผ๋กœ ๋ณ„๋„์˜ ์„ค์ •ํŒŒ์ผ ์—†์ด ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜์„ ์ง€์›ํ•œ๋‹ค.

Tree Shaking (Dead code elimination)

  • Parcel์€ ES6๋ฐ CommonJS ๋ชจ๋“ˆ ๋ชจ๋‘์— ๋Œ€ํ•ด Tree shaking์„ ์ง€์›ํ•œ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์„ ์บ์‹ฑํ•˜์—ฌ ๋‹ค์‹œ ๋นŒ๋“œํ•  ๊ฒฝ์šฐ ๋น ๋ฅธ ์†๋„๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค.

Code splitting

  • Parcel์˜ Code splitting์€ zero-configuration ์ด๋ผ๋Š” ํŠน์ง•์œผ๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. import() ํ•จ์ˆ˜ ๊ตฌ๋ฌธ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์–ด๋˜๋ฉฐ, ์ด๋Š” ์ผ๋ฐ˜ import ๋ฌธ์ด๋‚˜ require ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€๋งŒ Promise๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋Š” ๋ชจ๋“ˆ์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œ๋จ์„ ์˜๋ฏธํ•œ๋‹ค.

Dev Server

  • Parcel์€ Dev server๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ , ํŒŒ์ผ์ด ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ๋‹ค์‹œ ๋นŒ๋“œ ํ•œ๋‹ค.

Hot Module Replacement

  • Parcel์€ ๊ธฐ๋ณธ์ ์œผ๋กœ HMR์„ ์ง€์›ํ•œ๋‹ค.

  • ์ด ๊ธฐ๋Šฅ์€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ „์ฒด ๋ฆฌ๋กœ๋“œ๋ฅผ ํ•  ํ•„์š”์—†์ด ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€, ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.

Parcel์—์„œ๋„ zero-configuration์ด๋ผ๊ณ  ํ–ˆ์ง€๋งŒ plugin์„ ์ œ๊ณตํ•ด ์†Œ๊ทœ๋ชจ์—์„œ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ง€์›ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค.



ESLint

ESLint๋Š” JavaScript, JSX์˜ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋กœ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด ๋ฌธ๋ฒ•์ ์ธ ์˜ค๋ฅ˜๋‚˜ ์•ˆํ‹ฐ ํŒจํ„ด์„ ์ฐพ์•„์ฃผ๊ณ  ์ผ๊ด€๋œ ์ฝ”๋“œ ์Šคํƒ€์ผ๋กœ ์ž‘์„ฑํ•˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. JSLint, JSHint์™€ ๊ฐ™์ด ๋‹ค๋ฅธ JavaScript ์ •์  ๋ถ„์„ ๋„๊ตฌ๋“ค๋„ ์žˆ์ง€๋งŒ, ESLint๊ฐ€ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์‰ฝ๊ณ  ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜ ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋Š” ์ถ”์„ธ์ด๋‹ค. ESLint๋Š” ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜์–ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ Airbnb Style Guide, Google Style Guide ๊ฐ€ ๊ทธ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.

ํ˜„์žฌ ์„œ๋น„์Šค ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ESLint๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ํ˜ผ์ž ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋‹ˆ Coding convention์ด ์ œ๋Œ€๋กœ ์ง€์ผœ์ง€์ง€ ์•Š์„ ๋•Œ๊ฐ€ ๋งŽ์•˜๋‹ค.

ESLint๊ฐ€ ์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๋ณด๊ธฐ ํŽธํ•œ ์ชฝ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฆฐํŠธ๋ฅผ ๊บผ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๋Š”๋ฐ ์•ž์œผ๋กœ๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ๋ฆฐํŠธ๋ฅผ ํ†ตํ•ด์„œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.



Last updated