ํ๋ก ํธ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง๋ ๋ช ๋ ๋์ ๋๋ถ์๊ฒ ๋ฐ์ ํ์ต๋๋ค. ๊ณผ๊ฑฐ์๋ ๋จ์ํ <script> ํ๊ทธ๋ก JS ํ์ผ์ ๋ถ๋ฌ์ค๋ฉด ๋์์ง๋ง, ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋ชจ๋ ๋จ์ ๊ฐ๋ฐ์ด ๋ณดํธํ๋๋ฉด์ โ๋ชจ๋ ๋ฒ๋ค๋ฌ(Module Bundler)โ๊ฐ ํ์ ๋๊ตฌ๊ฐ ๋์์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ ๋ํ์ ์ธ ๋ชจ๋ ๋ฒ๋ค๋ฌ์ธ Webpack, Rollup.js, ๊ทธ๋ฆฌ๊ณ ์ฐจ์ธ๋ ๋ฒ๋ค๋ง ๋๊ตฌ๋ก ๊ฐ๊ด๋ฐ๋ Vite์ ๋ํด ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
1. ๋ชจ๋ ๋ฒ๋ค๋ฌ๋
๋ชจ๋ ๋ฒ๋ค๋ฌ๋ ์ฌ๋ฌ ๊ฐ์ JavaScript, CSS, ์ด๋ฏธ์ง ๋ฑ์ ํ์ผ์ ์์กด์ฑ ๊ทธ๋ํ(Dependency Graph)๋ก ๋ถ์ํด ํ๋์ ํ์ผ(๋๋ ์ต์ ํ๋ ์ฌ๋ฌ ํ์ผ)๋ก ๋ฌถ์ด์ฃผ๋ ๋๊ตฌ์
๋๋ค.
๋ชฉ์ : ๋ธ๋ผ์ฐ์ ๊ฐ ํจ์จ์ ์ผ๋ก ๋ก๋ํ ์ ์๋๋ก ์ต์ ํ๋ ๋ฒ๋ค์ ๋ง๋ค์ด์ฃผ๋ ๊ฒ.
์ ํ์ํ๊ฐ?
๐์๋ ๊ฐ์ : ํ์ผ์ด ๋ง์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋์ฉ ์์ฒญํด์ผ ํด์ ๋๋ ค์. ๋ฒ๋ค๋ฌ๊ฐ ํ์ผ์ ํฉ์ณ์ ์์ฒญ์ ์ค์ฌ์ค๋๋ค.
๐์ต์ ํ: ์ฐ์ด์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐ(ํธ๋ฆฌ ์์ดํน)ํ๊ฑฐ๋, ์ฝ๋๋ฅผ ์์ถํด ์ฉ๋์ ์ค์ฌ์ค๋๋ค.
๐๊ฐ๋ฐ ํธ์์ฑ: ์ต์ ๋ฌธ๋ฒ(ES6, TypeScript ๋ฑ)์ ๊ตฌ๋ฒ์ ๋ธ๋ผ์ฐ์ ์์๋ ์ธ ์ ์๋๋ก ๋ณํํด ์ค๋๋ค.
2. ์ฃผ์ ๋ชจ๋ ๋ฒ๋ค๋ฌ
์ด์ ๋ง์ด ์ฐ์ด๋ 3๊ฐ์ง ๋๊ตฌ๋ฅผ ๋น๊ตํด๋ณผ๊ฒ์
Webpack
๊ฐ์ฅ ์ ๋ช
ํ๊ณ ์ค๋๋ ๋ฒ๋ค๋ฌ
์ค์ ์ด ๊ฐ๋ ฅํ์ง๋ง ๋ณต์กํ๋ค๋ ๋จ์ ์ด ์๋ค
entry โ loader โ plugin โ output ๊ตฌ์กฐ๋ก ๋์.
๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์์ ์ ์ด๊ณ ํ์ฅ์ฑ์ด ๋์ต๋๋ค.
์์
React, Vue ๊ฐ์ ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๋ฒ๋ค๋ฌ๋ก ๋ง์ด ์ฐ์์ต๋๋ค.
๋ณต์กํ ๋น๋(์ด๋ฏธ์ง, CSS, JS, TS ๋ค ํฉ์น๊ธฐ)์ ์ ๋ฆฌ.
Rollup.js
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์์ ๊ฐ์ .
Webpack๋ณด๋ค ๋จ์ํ๊ณ ๊ฐ๋ณ์ต๋๋ค.
ํธ๋ฆฌ ์์ดํน(tree shaking) ๊ธฐ๋ฅ์ด ๊ฐ๋ ฅํด์, ์ฐ์ง ์๋ ์ฝ๋๊ฐ ๊ฑฐ์ ๋จ์ง ์์์.
์์:
Lodash, D3.js ๊ฐ์ ์ ๋ช
ํ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Rollup์ผ๋ก ๋น๋๋ฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ํ ๋๋ Webpack๋ณด๋ค Rollup์ด ๋ ์ ํธ๋ฉ๋๋ค.
Vite
์ฐจ์ธ๋ ๋ฒ๋ค๋ฌ๋ก, ์ต๊ทผ ๊ฐ์ฅ ํซํฉ๋๋ค.
๋ด๋ถ์ ์ผ๋ก Rollup์ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง, ๊ฐ๋ฐ ์๋ฒ๋ ESBuild(Go ์ธ์ด๋ก ๋ง๋ ์ด๊ณ ์ ๋ฒ๋ค๋ฌ)๋ฅผ ์ฌ์ฉ
๐ด์ฅ์ : ๊ฐ๋ฐ ์๋ฒ ์๋๊ฐ ์์ฒญ ๋น ๋ฆ (๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ฆ์ ๋ฐ์ โ HMR)
๐ด๋จ์ : ์์ง์ Webpack๋งํผ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๊ฐ ๋ฐฉ๋ํ์ง ์์
์์:
Vue 3, React ์ต์ ํ
ํ๋ฆฟ์์ ๊ธฐ๋ณธ ๋น๋ ๋๊ตฌ๋ก ์ฑํ๋จ
์คํํธ์
์ด๋ ๊ฐ์ธ ํ๋ก์ ํธ์์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ๋ ์ต์
ํ์ฌ์์๋ ๊ธฐ์กด์ React + Webpack ๊ธฐ๋ฐ์ผ๋ก ์ด์ํ๋ ์๋น์ค๋ฅผ Vite๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฒฝํ์ด ์์ต๋๋ค. ํ๋ก์ ํธ๊ฐ ๋ฌด๊ฑฐ์์ง๋ฉด์ Webpack ํ๊ฒฝ์์ ๋น๋ ์๋๊ฐ ์ค๋๊ฑธ๋ ค ์ด๊ธฐ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์ํ๋๋ฐ์ 10๋ถ ์ ๋๊ฐ ๊ฑธ๋ฆฌ๋ ์์ฃผ ํ๋ ์ํฉ์ด ์๊ฒจ๋ฒ๋ฆฐ๊ฑฐ์ฃ ! HMR ์๋๋ ๊ฐ์ ํ๊ธฐ ์ํจ๊ณผ ์ต์ ์ํ๊ณ์ ํธํ์ฑ์ ๊ณ ๋ คํด์ ๋ ผ์ ๊ฒฐ๊ณผ vite๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ๋ก ๊ฒฐ์ ์ ํ์ต๋๋ค
๊ทธ ๊ฒฐ๊ณผ, ๊ฐ๋ฐ ์๋ฒ ๊ตฌ๋ ์๋๊ฐ 1๋ถ ๋ฏธ๋ง์ผ๋ก ๋จ์ถ, HMR์๋๋ ๋งํ ๊ฒ๋ ์์ด ํ์ ํ ๋นจ๋ผ์ก์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, Vite๋ Webpack ๋๋น ํจ์ฌ ๊ฐ๋ณ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํ๊ณ , ํ์ ์์ฐ์ฑ์๋ ๊ธ์ ์ ์ธ ํจ๊ณผ๋ฅผ ์คฌ์ต๋๋ค.
