๐์นํฉ(Webpack)
webpack
์นํฉ์ ๋ชจ๋ ๋ฒ๋ค๋ฌ์ ๋๋ค. ์ฃผ์ ๋ชฉ์ ์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ ์ ์๋๋ก JavaScript ํ์ผ์ ๋ฒ๋ค๋ก ๋ฌถ๋ ๊ฒ์ด์ง๋ง, ๋ฆฌ์์ค๋ ์ ์ ์ ๋ณํํ๊ณ ๋ฒ๋ค๋ง ๋๋ ํจํค์งํ ์๋ ์์ต๋๋ค.
webpack.kr
์นํฉ์ ํ๋ก ํธ์๋ ์ํ๊ณ์์ ์ค๋ ์๊ฐ ๋์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ก, ๋ณต์กํ ํ๋ก์ ํธ์์๋ ์์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์นํฉ์ ํ์ผ์ ๋ชจ๋ ๋จ์๋ก ๊ด๋ฆฌํ๋ฉฐ, ๋ค์ํ ๋ฆฌ์์ค(์๋ฐ์คํฌ๋ฆฝํธ, CSS, ์ด๋ฏธ์ง ๋ฑ)๋ฅผ ๋ฒ๋ค๋งํ์ฌ ์ต์ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ญ๋๋ค.
์นํฉ(Webpack) ์ฃผ์ ๊ฐ๋
- ์๋ ๋ฐฉ์ : ์นํฉ์ ๋ชจ๋ ํ์ผ์ ํ๋์ ํฐ ๋ฒ๋ค(bundle)๋ก ๋ฌถ์ด ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ๋ก๋ํ๋๋ก ํฉ๋๋ค. ๊ฐ ๋ชจ๋์ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ํตํด ๊ด๋ฆฌ๋๋ฉฐ, ์นํฉ์ ์ด ๊ทธ๋ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ์จ์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ก๋ํฉ๋๋ค.
- ํซ ๋ชจ๋ ๋ฆฌํ๋ ์ด์ค๋จผํธ(HMR) : ์นํฉ์ ํซ ๋ชจ๋ ๋ฆฌํ๋ ์ด์ค๋จผํธ๋ฅผ ํตํด ์ฝ๋ ๋ณ๊ฒฝ ์ ์ ์ฒด ํ์ด์ง ์๋ก ๊ณ ์นจ ์์ด ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ ์ ์์ด ๊ฐ๋ฐ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
- ๊ตฌ์ฑ ํ์ผ : webpack.config.js ํ์ผ์์ ๊ตฌ์ฑํ๋ฉฐ, ๋ค์ํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ก๋(loader)๋ฅผ ํ์ฉํ์ฌ ํ๋ก์ ํธ์ ๋ง๊ฒ ์ธ๋ถ ์ค์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์นํฉ์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํนํ ์ ์ฉํฉ๋๋ค.
์นํฉ(Webpack)์ ์ฅ์
- ๊ฐ๋ ฅํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ก๋ ์ํ๊ณ : ์นํฉ์ ๋ค์ํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ก๋๋ฅผ ์ ๊ณตํ์ฌ ์ด๋ฏธ์ง ์์ถ, CSS ์ ์ฒ๋ฆฌ, Babel ์ปดํ์ผ ๋ฑ ๋ค์ํ ์์ ์ ์๋ํํ ์ ์์ต๋๋ค.
- ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉ : ์นํฉ์ ํ์ฅ์ฑ๊ณผ ์ปค์คํฐ๋ง์ด์ง ๊ธฐ๋ฅ ๋๋ถ์ ๋ณต์กํ ํ๋ก์ ํธ์์๋ ์์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฝ๋ ์คํ๋ฆฌํ : ์นํฉ์ ์ฝ๋ ์คํ๋ฆฌํ ์ ํตํด ํ์ํ ๋ถ๋ถ๋ง ๋ก๋ํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ด SPA์์๋ ํจ๊ณผ์ ์ ๋๋ค.
์นํฉ(Webpack)์ ๋จ์
- ์ด๊ธฐ ์ค์ ์ด ๋ณต์ก : ์นํฉ์ ๊ธฐ๋ณธ ์ค์ ๋ง์ผ๋ก๋ ์์ํ๊ธฐ ์ด๋ ต๊ณ , ๋ค์ํ ์ค์ ์ ํ์๋ก ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ด๊ธฐ์ ํ์ต ๊ณก์ ์ด ๋์ ์ ์์ต๋๋ค.
- ๋๋ฆฐ ๋น๋ ์๋ : ํฐ ํ๋ก์ ํธ์์ ๋น๋ ์๋๊ฐ ๋๋ ค์ง ์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ ์๋ฒ ๋ก๋ฉ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ํนํ ์ด๊ธฐ ๋น๋๊ฐ ์ค๋ ๊ฑธ๋ฆด ๋๊ฐ ์์ต๋๋ค.
๐ฎ๋นํธ(Vite)
Vite
Vite, ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ์๋ก์ด ๊ธฐ์ค
ko.vite.dev
๋นํธ(Vite)๋ ๋น ๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ชฉํ๋ก ํ ์ต์ ๋น๋ ๋๊ตฌ๋ก, ํนํ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์ ๊ณตํ์ฌ ์์ฐ์ฑ์ ๋์ ๋๋ค. Vite๋ ๊ฐ๋ฐ ์ค์ ES ๋ชจ๋์ ์ฌ์ฉํ์ฌ ํ์ํ ํ์ผ๋ง ๋ก๋ํ๊ธฐ ๋๋ฌธ์ ๋น๋ ์๋๊ฐ ํจ์ฌ ๋น ๋ฆ ๋๋ค. ๋ํ, ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก ์๋ฌ ๋ฉ์์ง๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋๋ฒ๊น ์๋ ํธ๋ฆฌํฉ๋๋ค. ํนํ SPA์ ๊ฐ์ ๋น๊ต์ ๊ฐ๋จํ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ์ด ์๊ตฌ๋๋ ํ๋ก์ ํธ์ ์ ํฉํ๋ฉฐ, ๋น ๋ฅธ HMR๊ณผ ๋ธ๋ผ์ฐ์ ์์์ ์๋ฌ ํ์ธ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ๋ฆฌํฉ๋๋ค.
๋นํธ(Vite) ์ฃผ์ ๊ฐ๋
- ์๋ ๋ฐฉ์ : ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ES ๋ชจ๋ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ํ์ผ๋ง ๋ก๋ํ์ฌ ๋น๋ ๊ณผ์ ์ด ๊ฑฐ์ ํ์ ์์ต๋๋ค. ํ๋ก๋์ ๋น๋ ์์๋ ๋กค์ (Rollup) ๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํ๋ ๋ฒ๋ค ํ์ผ์ ์์ฑํฉ๋๋ค.
- ๊ตฌ์ฑ ํ์ผ : vite.config.js ํ์ผ์ ํตํด ์ค์ ํ๋ฉฐ, ๊ธฐ๋ณธ ์ค์ ์ด ๊ฐ๋จํ๊ณ ์์ํ๊ธฐ ์ฝ์ต๋๋ค. ๋๋ถ์ด ๊ฐ๋จํ ์ค์ ์ผ๋ก๋ ๊ธฐ๋ณธ์ ์ธ ์ต์ ํ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
๋นํธ(Vite)์ ์ฅ์
- ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ์ ํซ ๋ชจ๋ ๋ฆฌ๋ก๋ฉ(HMR) : ์ฆ๊ฐ์ ์ธ ๋ฐ์์ผ๋ก ์ฝ๋๋ฅผ ํ ์คํธํ๊ณ ํผ๋๋ฐฑ์ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ฐ๋จํ ์ด๊ธฐ ์ค์ ๊ณผ ๊ธฐ๋ณธ ์ต์ ํ : ์ค์ ํ์ผ์ด ๊ฐ๊ฒฐํ์ฌ ๋น ๋ฅด๊ฒ ์์ํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ์ผ๋ก ์ต์ ํ๋ ์ํ์์ ์๋ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์์ ์๋ฌ ๋ฉ์์ง ํ์ธ : Vite๋ ๊ฐ๋ฐ ์ค์ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ์ค๋ฒ๋ ์ดํ์ฌ ํ์ํด ์ค๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์์ ์ด ํ์ํ ๋ ๋น ๋ฅด๊ฒ ์๋ฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋นํธ(Vite)์ ๋จ์
- ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์์ ์ ํ์ : ์นํฉ์ ๋นํด ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์์ ๋ค์ํ ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ๋ค์ ์ ํ์ด ์์ ์ ์์ต๋๋ค.
- ์ ํ์ ์ธ ํ๋ฌ๊ทธ์ธ : Vite๋ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ต์ ํ๋ ๋น๋ ๋๊ตฌ์ด๋ฏ๋ก, ํน์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์์๋ ์นํฉ์ ๋นํด ์ ์ฐ์ฑ์ด ๋ฎ์ ์ ์์ต๋๋ค.