Webpack Introduction
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(๋ก์ปฌํ๊ฒฝ์์ ๋ง๋ ๋ชจ๋))
ํน์ ํ๋ก์ ํธ์ ์ ์ฉ๋ ๋ชจ๋
Webpack๋ฑ์ฅ๋ฐฐ๊ฒฝ
ํ์ผ๋จ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ๊ด๋ฆฌ์ ํ์์ฑ
ํ์ผ๋จ์๋ก ๋ณ์๋ฅผ ๊ด๋ฆฌํด์ผํ ํ์์ฑ,
์์ ์๋ Common.js, AMD๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ์ด์๋ค.
์น ๊ฐ๋ฐ ์์ ์๋ํ๋๊ตฌ
HTML,CSS, JS ์์ถ
์ด๋ฏธ์ง ์์ถ
CSS ์ ์ฒ๋ฆฌ๊ธฐ ๋ณํ
Grunt, Gulp๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉ
Web Application์ ๋น ๋ฅธ ๋ก๋ฉ ์๋์ ๋์ ์ฑ๋ฅ
๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก ์์ฒญํ๋ ํ์ผ์ ์ซ์๋ฅผ ์ค์ด๊ธฐ (์น ํ์คํฌ ๋งค๋์ ๋ฅผ ์ด์ฉํด ํ์ผ ์์ถ ๋ฐ ๋ณํฉ)
Lazy Loading: ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ์๋๋ฅผ ๋์ด๊ธฐ ์ํด, ๋์ค์ ํ์ํ ์์๋ค์ ๋์ค์ ์์ฒญ.
์นํฉ์ ๊ธฐ๋ณธ์ฒ ํ: ํ์ํ ์์์ ๋ฏธ๋ฆฌ ๋ก๋ฉํ๋๊ฒ ์๋๋ผ, ๊ทธ๋ ๊ทธ๋ ์์ฒญํ์.
์นํฉ์ผ๋ก ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์
์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์ ์ ํจ๋ฒ์
ES6 Moules ๋ฌธ๋ฒ๊ณผ ์นํฉ์ ๋ชจ๋๋ฒ๋ค๋ง์ผ๋ก ํด๊ฒฐ
๋ธ๋ผ์ฐ์ ๋ณ HTTP ์์ฒญ ์ซ์์ ์ ์ฝ
HTTP ์์ฒญ ์ซ์๋ฅผ ์ค์์ผ๋ก์จ, Web Application์ ์ฑ๋ฅ์ ๋์ฌ์ค ๋ฟ๋ง์๋๋ผ, ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ์กฐ์ํ๋ ์๊ฐ์ ์๋น๊ธธ ์ ์์.
๋ํ ์นํฉ์ ์ด์ฉํด ์ฌ๋ฌ๊ฐ์ ํ์ผ์ ํ๋๋ก ํฉ์น๋ฉด, ๋ธ๋ผ์ฐ์ ๋ณ HTTP ์์ฒญ ์ซ์ ์ ์ฝ์ ํผํ ์ ์๋ค.
์ฌ์ฉํ์ง ์๋ ์ฝ๋์ ๊ด๋ฆฌ
Dynamic Loading & Lazy Loading ๋ฏธ์ง์
Code Splitting๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ์ํ๋ ๋ชจ๋์ ์ํ๋ ํ์ด๋ฐ์ ๋ก๋ฉํ ์ ์๋ค.
์ ๋ฆฌ
๋ชจ๋์ ์ฌ์ฉํ๋ค๋ฉด
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
์ฝ๋์ ๊ด๋ฆฌ๊ฐ ํธํด์ง๋ค.(๋ชจ๋์ ํตํด ๊ธฐ๋ฅ์ ์ฐพ๋ ์๊ฐ ๋จ์ถ)
์ฝ๋๋ฅผ ๋ชจ๋ํํ๋ ๊ธฐ์ค์ด ๋ช ํํด์ผํ๋ค.
bundle
Web Apllication์ ๊ตฌ์ฑํ๋ ๋ชจ๋(HTML, CSS, JS, Image, ...)์ ์ด๋ฅผ ์กฐํฉํด์ ํ๋์ ํ์ผ๋ก ๋ง๋ค์ด๋
์๋ก ์ฐธ์กฐ ๊ด๊ณ์ ์๋ ๋ชจ๋๋ค์ ๋ชจ์์, ํ๋์ ํ์ผ๋ก ๋ฌถ๋ ๊ฒ.
๋ชจ๋์ ์์กด์ฑ์ ์์ ํ๊ฒ ์ ์งํ๋ฉด์, ํ๋์ ํ์ผ๋ก ๋ง๋๋ ๊ณผ์
์ค์ํ ์ด์
๋ชจ๋ ๋ชจ๋์ ๋ก๋ํ๊ธฐ ์ํ ์๊ฐ์ด ๋จ์ถ๋จ
์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํด์ค๋ค.
์ฐธ์กฐ๋์ด์ง๋ ์ฝ๋๋ง ๋จ๊ธฐ ๋๋ฌธ
ํ์ผ ํฌ๊ธฐ๊ฐ ๊ฐ์๋จ.(๋ฆฌ์์ค๋ฅผ ๋นจ๋ฆฌ ๋ถ๋ฌ์ด. ๋ ๋ํธ๋ฆฌ๋ฅผ ๋ ์งง๊ฒ, ์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๋ ๋น ๋ฅด๊ฒ)
ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ค๋ค.
ToC
CommonJS: NodeJS์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ชจ๋ ์ฌ์ฉํ๋ ์ํ
ESM: ECMM Script Module ์ฌ์ฉํ๋ ์ํ์ฝ๋
Webpack: ๋ชจ๋ ๋ฒ๋ค๋ฌ ํ์ต ๋ชฉํ
๊ธฐ๋ณธ๊ตฌ์กฐ (Webpack - BasicStructure)
์นํฉ ์ค์ (Webpack Config)
์นํฉํ์ฉ (Webpack - Loader & Plugin)
Last updated