Webpack Introduction

  1. Webpack

    • ๋ชจ๋“ˆ์˜ ์ •์˜

      • ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๊ฐ€ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋Š” ํ˜•ํƒœ

      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€์ ์—์„œ ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ์ž‘์€ ์ฝ”๋“œ ๋‹จ์œ„.

      • ์„ฑ๊ฒฉ์ด ๋น„์Šทํ•œ ๊ธฐ๋Šฅ๋“ค์„ ํ•˜๋‚˜์˜ ์˜๋ฏธ ์žˆ๋Š” ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๋ชจ๋“ˆ์ด ๋œ๋‹ค.

    • ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋ง (== ๋นŒ๋“œ, ๋ณ€ํ™˜, ๋ฒˆ๋“ค๋ง)

      • Web Application์„ ๊ตฌ์„ฑํ•˜๋Š” ์ž์›(HTML, CSS, JS, ...)์„ ๋ชจ๋‘ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ๋กœ ๋ณด๊ณ  ์ด๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋ณ‘ํ•ฉ๋œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“œ๋Š” ๋„๊ตฌ

    • ์›นํŒฉ์ด๋ž€

      • ์ตœ์‹  frontend framework์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ

    • ์›นํŒฉ์—์„œ์˜ ๋ชจ๋“ˆ

      • ์›นํŒฉ์—์„œ ์ง€์นญํ•˜๋Š” ๋ชจ๋“ˆ์ด๋ผ๋Š” ๊ฐœ๋…์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ , WEB Application์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ์ž์›์„ ์˜๋ฏธ

      • WebApplication์„ ์ œ์ž‘ํ•˜๋ ค๋ฉด, HTML, CSS, JS, Img, Font, ๋“ฑ ๋งŽ์€ ํŒŒ์ผ์ด ํ•„์š”ํ•œ๋ฐ, ์ด ํŒŒ์ผํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋ชจ๋‘ ๋ชจ๋“ˆ์ด๋ผ๊ณ  ํ•œ๋‹ค.

    • ๋ชจ๋“ˆ์˜ ์ข…๋ฅ˜

      • Built-in Core Module (๋‚ด์žฅ๋œ ๋ชจ๋“ˆ, Node.js module)

        • 'path': ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋กํ•จ

      • Community-based Module (์˜ˆ: npm, ESM)

        • npm CLI๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•จ

      • Local Module (MathUtil(๋กœ์ปฌํ™˜๊ฒฝ์—์„œ ๋งŒ๋“  ๋ชจ๋“ˆ))

        • ํŠน์ • ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ ๋ชจ๋“ˆ

  2. Webpack๋“ฑ์žฅ๋ฐฐ๊ฒฝ

    • ํŒŒ์ผ๋‹จ์œ„์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ๊ด€๋ฆฌ์˜ ํ•„์š”์„ฑ

      • ํŒŒ์ผ๋‹จ์œ„๋กœ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•  ํ•„์š”์„ฑ,

      • ์˜ˆ์ „์—๋Š” Common.js, AMD๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ’€์–ด์™”๋‹ค.

    • ์›น ๊ฐœ๋ฐœ ์ž‘์—… ์ž๋™ํ™”๋„๊ตฌ

      • HTML,CSS, JS ์••์ถ•

      • ์ด๋ฏธ์ง€ ์••์ถ•

      • CSS ์ „์ฒ˜๋ฆฌ๊ธฐ ๋ณ€ํ™˜

      • Grunt, Gulp๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉ

    • Web Application์˜ ๋น ๋ฅธ ๋กœ๋”ฉ ์†๋„์™€ ๋†’์€ ์„ฑ๋Šฅ

      • ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๋Š” ํŒŒ์ผ์˜ ์ˆซ์ž๋ฅผ ์ค„์ด๊ธฐ (์›น ํƒœ์Šคํฌ ๋งค๋‹ˆ์ €๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ ์••์ถ• ๋ฐ ๋ณ‘ํ•ฉ)

      • Lazy Loading: ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด, ๋‚˜์ค‘์— ํ•„์š”ํ•œ ์ž์›๋“ค์€ ๋‚˜์ค‘์— ์š”์ฒญ.

      • ์›นํŒฉ์˜ ๊ธฐ๋ณธ์ฒ ํ•™: ํ•„์š”ํ•œ ์ž์›์€ ๋ฏธ๋ฆฌ ๋กœ๋”ฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ทธ๋•Œ ๊ทธ๋•Œ ์š”์ฒญํ•˜์ž.

  3. ์›นํŒฉ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ

    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜ ์œ ํšจ๋ฒ”์œ„

      • ES6 Moules ๋ฌธ๋ฒ•๊ณผ ์›นํŒฉ์˜ ๋ชจ๋“ˆ๋ฒˆ๋“ค๋ง์œผ๋กœ ํ•ด๊ฒฐ

    • ๋ธŒ๋ผ์šฐ์ €๋ณ„ HTTP ์š”์ฒญ ์ˆซ์ž์˜ ์ œ์•ฝ

      • HTTP ์š”์ฒญ ์ˆซ์ž๋ฅผ ์ค„์ž„์œผ๋กœ์จ, Web Application์˜ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ค„ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ, ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์‹œ๊ฐ„์„ ์•ž๋‹น๊ธธ ์ˆ˜ ์žˆ์Œ.

      • ๋˜ํ•œ ์›นํŒฉ์„ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋ณ„ HTTP ์š”์ฒญ ์ˆซ์ž ์ œ์•ฝ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ์˜ ๊ด€๋ฆฌ

    • Dynamic Loading & Lazy Loading ๋ฏธ์ง€์›

      • Code Splitting๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ชจ๋“ˆ์„ ์›ํ•˜๋Š” ํƒ€์ด๋ฐ์— ๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. ์ •๋ฆฌ

    • ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด

      • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€

      • ์ฝ”๋“œ์˜ ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•ด์ง„๋‹ค.(๋ชจ๋“ˆ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ฐพ๋Š” ์‹œ๊ฐ„ ๋‹จ์ถ•)

      • ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ธฐ์ค€์ด ๋ช…ํ™•ํ•ด์•ผํ•œ๋‹ค.

    • bundle

      • Web Apllication์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ(HTML, CSS, JS, Image, ...)์„ ์ด๋ฅผ ์กฐํ•ฉํ•ด์„œ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด๋ƒ„

      • ์„œ๋กœ ์ฐธ์กฐ ๊ด€๊ณ„์— ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์„ ๋ชจ์•„์„œ, ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ๋Š” ๊ฒƒ.

      • ๋ชจ๋“ˆ์˜ ์˜์กด์„ฑ์€ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ, ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •

      • ์ค‘์š”ํ•œ ์ด์œ 

        • ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋จ

        • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์ค€๋‹ค.

          • ์ฐธ์กฐ๋˜์–ด์ง€๋Š” ์ฝ”๋“œ๋งŒ ๋‚จ๊ธฐ ๋•Œ๋ฌธ

          • ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๊ฐ์†Œ๋จ.(๋ฆฌ์†Œ์Šค๋ฅผ ๋นจ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ด. ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๋” ์งง๊ฒŒ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ‘๊ทผ ๋” ๋น ๋ฅด๊ฒŒ)

        • ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ค€๋‹ค.

ToC

  • CommonJS: NodeJS์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ ์‚ฌ์šฉํ•˜๋Š” ์ƒ˜ํ”Œ

  • ESM: ECMM Script Module ์‚ฌ์šฉํ•˜๋Š” ์ƒ˜ํ”Œ์ฝ”๋“œ

  • Webpack: ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ ํ•™์Šต ๋ชฉํ‘œ

    • ๊ธฐ๋ณธ๊ตฌ์กฐ (Webpack - BasicStructure)

    • ์›นํŒฉ ์„ค์ • (Webpack Config)

    • ์›นํŒฉํ™œ์šฉ (Webpack - Loader & Plugin)

Last updated