Webpack๋ก ๋น๋ ํ๊ฒฝ ๊ตฌ์ฑํ๋ฉฐ ์ดํดํ ์ ํ ๊ธฐ์ค
๋ฌธ์ /๋๊ธฐ
- React๋ฅผ ์ฌ์ฉํ๋ฉฐ "์ ์ด๋ค ๊ฒฝ์ฐ์๋ Vite, ์ด๋ค ๊ฒฝ์ฐ์๋ Webpack์ ์ฐ๋๊ฐ?"๋ผ๋ ์๋ฌธ์ด ์๊น.
- ๊ณต์ ๋ฌธ์์ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํด Webpack ๊ธฐ๋ฐ์ผ๋ก ๋น๋ ํ๊ฒฝ์ ์ง์ ๊ตฌ์ฑํ๋ฉฐ ๋์ ์๋ฆฌ๋ฅผ ์ฒด๋ํ๊ณ , ๋๊ตฌ ์ ํ ๊ธฐ์ค์ ์ ๋ฆฌํ๊ณ ์ ํจ.
ํ๊ฒฝ
- ํ๋ก์ ํธ: ๋น๋ ๋๊ตฌ ํ์ต/์ค์ต์ฉ ์ค์ ๊ตฌ์ฑ
- ์คํ: React, TypeScript, Webpack 5, Babel
- Node: LTS ๋ฒ์ (์: 18.x)
ํ์ต/์ค์ต ๊ณผ์
- ๊ธฐ๋ณธ ์ค์ ์์ฑ
entry/output/mode/devtool/resolve๋ฅผ ๋ถ๋ฆฌํ๊ณ ๊ฐ๋ฐ/๋ฐฐํฌ ๋ชจ๋๋ฅผ ์ค์์นญ.- ๊ฐ๋ฐ ์ ์์ค๋งต(devtool), ๋ณ์นญ(alias)๋ก import ๊ฒฝ๋ก ๋จ์ํ.
- ๋ก๋ ๊ตฌ์ฑ(ํ์ผ์ JS๋ก ๋ณํ)
babel-loader๋๋ts-loader๋ก TS/JS ํธ๋์คํ์ผ.css-loader+style-loader๋ก CSS ๋ฒ๋ค๋ง,asset modules๋ก ์ด๋ฏธ์ง/ํฐํธ ์ฒ๋ฆฌ.
- ํ๋ฌ๊ทธ์ธ ๊ตฌ์ฑ(๋ฒ๋ค ์๋ช
์ฃผ๊ธฐ ํ์ฅ)
HtmlWebpackPlugin์ผ๋ก HTML ํ ํ๋ฆฟ ์ฃผ์ ,DefinePlugin์ผ๋ก ํ๊ฒฝ๋ณ์ ์ฃผ์ .- ํ๋ก๋์ ์์ ์ ๋ฆฌ/์ต์ ํ ํ๋ฌ๊ทธ์ธ ์ ์ฉ.
- ์ฝ๋ ์คํ๋ฆฌํ
/์บ์ฑ ์ ๋ต
splitChunks,runtimeChunk: 'single',contenthash๋ก ์ฅ๊ธฐ ์บ์ฑ ์ต์ ํ.- ๋์ import๋ก ๋ผ์ฐํธ ๋จ์ ์ฒญํฌ ๋ถ๋ฆฌ.
- ๊ฐ๋ฐ ๊ฒฝํ ๊ฐ์
webpack-dev-server์ HMR๋ก ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ ํ๋ณด.
ํต์ฌ ์ค์ ํฌ์ธํธ(์์ฝ)
- ๋ก๋๋ "๊ฐ ํ์ผ์ JS๋ก ๋ณํ"ํ๋ ์ญํ , ํ๋ฌ๊ทธ์ธ์ "๋ฒ๋ค๋ง ๊ณผ์ ์์ฒด๋ฅผ ํ์ฅ".
- ๊ฐ๋ฐ/๋ฐฐํฌ ์ค์ ๋ถ๋ฆฌ(devtool, ์์ถ, ์บ์ฑ), ์ํฐํฉํธ ์ด๋ฆ์
contenthash์ฌ์ฉ. - ํฐ ์์กด์ฑ์ ์ฒญํฌ ๋ถ๋ฆฌ, ๋ผ์ฐํธ๋ณ ์ฝ๋ ์คํ๋ฆฌํ ์ผ๋ก ์ด๊ธฐ ๋ก๋ ์๊ฐ ๋จ์ถ.
์ ํ ๊ธฐ์ค: Vite vs Webpack
- Vite
- ๋ค์ดํฐ๋ธ ESM+esbuild ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ ์๋ฒ๊ฐ ๋งค์ฐ ๋น ๋ฆ, ์ค์ ๋ณต์ก๋ ๋ฎ์.
- SPA/๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ ๋ฑ ์ผ๋ฐ์ ์ธ ์๊ตฌ์ ์ ํฉ, ์ต์ด ์์ฐ์ฑ ๋์.
- Webpack
- ๋ ๊ฑฐ์/๋ณต์กํ ์ปค์คํฐ๋ง์ด์ง, ์ ๋ฐํ ๋ฒ๋ค ํ์ดํ๋ผ์ธ ์ ์ด๊ฐ ํ์ํ ๋ ์ ๋ฆฌ.
- ์ปค์คํ ๋ก๋/ํ๋ฌ๊ทธ์ธ, ์ธ๋ฐํ ์ฒญํฌยท์บ์ฑ ์ ๋ต, SSR/๋ง์ดํฌ๋กํ๋ก ํธ์๋ ๋ฑ ๊ณ ๊ธ ์๋๋ฆฌ์ค์ ๊ฐ์ .
๊ฒ์ฆ
- ๊ฐ๋ฐ ์๋ฒ ๊ธฐ๋/๋ณ๊ฒฝ ๋ฐ์ ์๊ฐ, HMR ์ฒด๊ฐ ์๋ ํ์ธ.
- ๋ฒ๋ค ์ฌ์ด์ฆ์ ์ฒญํฌ ์, ์ด๊ธฐ ๋ก๋ ๋๋น ์ง์ฐ ๋ก๋ ํจ๊ณผ ๋น๊ต.
- ํ๋ก๋์ ๋น๋ ์๊ฐ ๋ฐ ์บ์ ์ ์ค ์ฌ๋ถ(ํ์ผ ํด์ ๋ณ๊ฒฝ) ํ์ธ.
๋ฐฐ์ด ์
- ๋น๋ ๋๊ตฌ๋ "ํ์ผ ๋ณํ(๋ก๋)"๊ณผ "๊ณผ์ ํ์ฅ(ํ๋ฌ๊ทธ์ธ)"์ ์กฐํฉ์ผ๋ก ์ดํดํ๋ฉด ๋ณต์ก์ฑ์ด ์ค์ด๋ ๋ค.
- ์๊ตฌ์ฌํญ์ด ๋จ์ํ๋ฉด Vite๋ก ๋น ๋ฅด๊ฒ ์์ํ๊ณ , ํ์ดํ๋ผ์ธ ์ ์ด๊ฐ ํ์ํด์ง์๋ก Webpack์ ์ฅ์ ์ด ๋ถ๊ฐ๋๋ค.
- ์ฝ๋ ์คํ๋ฆฌํ /์บ์ฑ์ ์ผ๋์ ๋ ์ค๊ณ๊ฐ ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์์ ๋์ด์ฌ๋ฆฐ๋ค.
์ฐธ๊ณ
- Webpack ๊ณต์ ๋ฌธ์, Vite ๊ณต์ ๋ฌธ์, ๊ฐ ๋ก๋/ํ๋ฌ๊ทธ์ธ ๋ ํผ๋ฐ์ค