โ Information
โ Relevant data
๐ฆ Information Resources
๐ฐ Content ->
1๏ธโฃ Intro
- Webpack ๊ณผ Vite ๋น๊ต
- A preview of whatโs to come
2๏ธโฃ Overview
Webpack์ด ๋๋ฆฐ ์ด์
๋ณต์กํ ์ค์ ๋ฐ ๊ตฌ์ฑ
Webpack์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ: ๋ณต์กํ ์ค์ ํ์ผ๋ก ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ด๊ธฐ ์ค์ ๋ฐ ์ ์ง ๋ณด์๊ฐ ์ด๋ ค์. ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ์ค์ ํ์ผ์ด ๋งค์ฐ ๋ณต์กํด์ ธ ๋น๋ ์๊ฐ์ด ๊ธธ์ด์ง.
ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์์์ ํ๊ณ
webpack: ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์์ ๋น๋ ์๋๊ฐ ๋๋ ค์ง ์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ํ๋ก๋์ ํ๊ฒฝ ๋ชจ๋์์ ์ ์ฒด ๋ฒ๋ค๋ง์ ์ํํจVite: ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ES ๋ชจ๋์ ์ง์ ๋ก๋ํ์ฌ ๋น ๋ฅธ ์๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ํ๋ก๋์ ๋น๋์์๋Rollup์ ์ฌ์ฉํ์ฌ ์ต์ ํ๋ ๋ฒ๋ค์ ์์ฑํจRollup: ES ๋ชจ๋์ ์ต์ ํ๋ ์ค๊ณ์ ํจ์จ์ ์ธ Tree-Shaking, ๊ฐ๋จํ Plugin ์์คํ ์ ํตํด ๋น ๋ฅธ ๋น๋ ์๋๋ฅผ ์ ๊ณต ์ด๋ฌํ ์ฐจ์ด์ ๋ค ๋๋ฌธ์, ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ Vite๊ฐ ๊ฐ๋ฐ ์๋์ ๋น๋ ์ต์ ํ ์ธก๋ฉด์์ ๋ ์ ๋ฆฌํ ์ ์๋ค.
ํ์ผ ํฌํค ๋ฐ ๋ก๋ฉ ์๊ฐ ๋ฌธ์
Webpack
- ์ ์ฒด ๋ฒ๋ค๋ง:
๋ชจ๋์ ํ๋์ ๋ฒ๋ค ํ์ผ๋ก ๋ฌถ๋ ๋ฐฉ์์ ๊ธฐ๋ณธ์ผ๋ก ํจ. ์ด๋ ๋ก๋ฉ ์์ ์ ๋ชจ๋ ์ฝ๋๋ฅผ ํ๋ฒ์ ๊ฐ์ ธ์์ผ ํ๊ธฐ ๋๋ฌธ์, ๋ฒ๋ค ํ์ผ์ด ์ปค์ง์๋ก ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ด ๊ธธ์ด์ง. - Code-Splitting: ๋ฒ๋ค์ ์ฌ๋ฌ๊ฐ์ ์ฒญํฌ๋ก ๋๋์ด ๋ก๋ฉ ์๊ฐ์ ์ต์ ํ ํ ์ ์์. ๊ทธ๋ฌ๋ ์ค์ ์ด ๋ณต์กํ ์ ์์ผ๋ฉฐ, ์ฌ๋๋ก ๊ตฌํํ์ง ์์ผ๋ฉด ์ฑ๋ฅ ์ต์ ํ ํจ๊ณผ๊ฐ ์ ํ์ ์ผ ์ ์์.
- Tree-Shaking: ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐ. ํ์ง๋ง ์๋ฒฝํ์ง ์์ ์ ์์ผ๋ฉฐ, ์์กด์ฑ ๊ด๋ฆฌ๊ฐ ๋ณต์กํ ์ ์์.
Vite
- ES ๋ชจ๋ ๊ธฐ๋ฐ ๊ฐ๋ฐ: ๊ฐ๋ฐ ํ๊ฒฝ์์ ES ๋ชจ๋์ ์ง์ ๋ก๋ํ์ฌ ํ์ํ ๋ชจ๋๋ง ๊ฐ์ ธ์ด. ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ ๋จ์ถ.
- ํ๋ก์ ์ ๋น๋: Rollup ์ ์ฌ์ฉํ์ฌ ์ต์ ํ๋ ๋ฒ๋ค ์์ฑ. Rollup์ ES ๋ชจ๋์ ์ต์ ํ ๋์ด์์ผ๋ฉฐ, ํจ์จ์ ์ธ Tree-Shaking๊ณผ Code-Splitting์ ํตํด ํ์ผ ํฌ๊ธฐ๋ฅผ ์ต์ํ.
- Lazy-Loading: ์ง์ฐ ๋ก๋ฉ์ ํตํด ํ์ํ ์์ ์๋ง ๋ชจ๋์ ๋ก๋ ํ ์ ์๋๋ก ์ง์. ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ ๋จ์ถ.
Plugin ๋ฐ Loader ์ฌ์ฉ์ ๋ณต์ก์ฑ
Webpack:
- ๋ค์ํ Plugin ๋ฐ Loader: ๋งค์ฐ ํ๋ถํ Plugin๊ณผ Loader ์ํ๊ณ๋ฅผ ๊ฐ์ง. ์ด๋ฅผ ํตํด ํ์ผ ํ์์ ๋ณํํ๊ณ , ์ฝ๋ ์์ถ, Tree-Shaking, Code-Splitting, ํ๊ฒฝ๋ณ์ ์ค์ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์.
- ๋ณต์กํ ์ค์ : ๊ฐ Plugin๊ณผ Loader๋ ํน์ ์ค์ ์ ์๊ตฌํ๋ฉฐ, ์ฌ๋ฌ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ก๋๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋ ์ค์ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์.
- ์์กด์ฑ ๊ด๋ฆฌ: ๋ณต์กํ ํ๋ก์ ํธ์์๋ Plugin๊ณผ Loader๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๋๊ฒ์ด ์ด๋ ต๊ณ , ์ค์ ํ์ผ์ด ๋ณต์กํด์ง ์ ์์.
Vite:
- ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ Plugin ์์คํ : Rollup ์ Plugin ์ธํฐํ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, Rollup Plugin์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์. Vite ์ ์ฉ Plugin๋ ์ฝ๊ฒ ์์ฑ ๊ฐ๋ฅ.
- ๋น ๋ฅธ ์ค์ : Plugin๊ณผ Loader ์ค์ ์ด ๊ฐ๋จํ๊ณ ์ง๊ด์ . ํ๋ฌ๊ทธ์ธ ๊ฐ์ ์ถฉ๋์ด ์ ๊ณ , ์ค์ ํ์ผ์ด ๊ฐ๊ฒฐํ์ฌ ๊ด๋ฆฌํ๊ธฐ ์ฌ์.
- ๋ชจ๋ ๋ฐฉ์: ๊ธฐ๋ณธ์ ์ผ๋ก ES ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ชจ๋๊ฐ์ ์์กด์ฑ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํจ.
Vite๊ฐ ๋น ๋ฅธ ์ด์
TL;DR
ESBuild์ Pollup์ ์ฅ์ ์ ํฉ์ณค๋ค.
ESBuild
์ด์ ๊น์ง ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ JS ๊ธฐ๋ฐ์ด์๋ค. ํ์ง๋ง JS๋ ์ฑ๋ฅ์ ํ๊ณ๊ฐ ์๋ค. ESBuild๋ Go ๋ก ์ ์๋์ด 10๋ฐฐ ๋น ๋ฅด๋ค.
Vite ํน์ง
- native ES modules ๊ธฐ๋ฐ์ ๊ฐ๋ ฅํ ๊ฐ๋ฐ์๋ฒ
- ESBuild๋ก ํ์ผ๋ค์ ํตํฉํ๊ณ Rollup์ ํตํด ๋ฒ๋ค๋ง:
- ๊ฐ๋ฐ ์ค์๋ ESBuild๋ก ๋น ๋ฅด๊ฒ ๋ชจ๋ ๋ณํ/ํตํฉ๋ง ํจ.
- ๋น๋์์๋ Rollup์ ์ฌ์ฉํด ์ต์ข ๋ฒ๋ค๋ง์ ํจ.
- ๋ชจ๋ CommonJS ๋ฐ UMD ํ์ผ์ ESM์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์๋๋ก ๋ณํํจ
- ๋ณ๋ ์ค์ ์์ด ๋ค์ํ ๋ฆฌ์์ค import ๊ฐ๋ฅ
- CSS ๋น๋ ์ต์ ํ(Direct Import ๊ตฌ๋ฌธ์ ๋ํด Preload ํ๋๋ก ํจ์ผ๋ก์จ ๋คํธ์ํฌ ๋น์ฉ ์ค์)
์ฃผ์ ์ฐจ์ด์
์ค์ ๋ณต์ก์ฑ
- Webpack: ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์ค์ ์ด ๋ณต์กํ๊ณ ์๊ฐ์ด ๋ง์ด ์์๋ ์ ์์. ํ๋ฌ๊ทธ์ธ ๋ฐ ๋ก๋ ๊ฐ์ ์์กด์ฑ ๋ฐ ์ถฉ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ ๋๊ฐ ๋ง์.
- Vite: ์ค์ ์ด ๊ฐ๋จํ๊ณ ์ง๊ด์ . ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ์ด ๊ฐํธํ๋ฉฐ, Rollup์ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ๊ทธ๋๋ก ํ์ฉ ๊ฐ๋ฅ.
์ํ๊ณ
- Webpack: ํ๋ถํ ํ๋ฌ๊ทธ์ธ ๋ฐ ๋ก๋ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํ ๊ฐ๋ฅ
- Vite: Rollup ํ๋ฌ๊ทธ์ธ๊ณผ Vite ์ ์ฉ ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ด, ํ๋ฌ๊ทธ์ธ ์ ํ์ ํญ์ด ๋์.
์ฌ์ฉ ํธ์์ฑ
- Webpack: ์ค์ ์ด ๋ณต์กํ ์ ์์ง๋ง, ๊ฐ๋ ฅํ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅ.
- Vite: ์ค์ ์ด ๊ฐ๋จํ์ฌ ๋น ๋ฅด๊ฒ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ก๋๋ฅผ ์ถ๊ฐํ๊ณ ์ฌ์ฉํ ์ ์์.
๊ฒฐ๋ก
๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ Vite๊ฐ ๊ฐ๋ฐ ์๋์ ๋น๋ ์ต์ ํ ์ธก๋ฉด์์ ๋ ์ ๋ฆฌํ ์ ์์ผ๋ฉฐ, Webpack์ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ๊ฐ๋ ฅํ ์ปค์คํฐ๋ง์ด์ง์ด ํ์ํ ๊ฒฝ์ฐ์ ์ ํฉ