Bundler
ํ์ต ํค์๋
Bundler
Bundler Tools
Parcel
webpack
rollup
Bundler
๐ Bundler ๋ฌด์์ธ๊ฐ?
์ํํธ์จ์ด ๋ฐ ์ผ๋ถ ํ๋์จ์ด์ ํจ๊ป ์๋ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ Package์ด๋ค.
๊ฐ๊ฐ์ ๋ชจ๋๋ค์ ๋ํด ์์กด์ฑ(์ฐ๊ด) ๊ด๊ณ๋ฅผ ํ์ ํ์ฌ ํ๋ ๋๋ ์ฌ๋ฌ๊ฐ์ ๊ทธ๋ฃน(=๋ฒ๋ค)์ผ๋ก ๋ณผ ์ ์๋ค.
๐ Bundler์ ํ์ ๋ฐฐ๊ฒฝ
์น์ ์ด์ฅ๊ธฐ ๋๋ ์น์ฌ์ดํธ์ ๊ท๋ชจ๊ฐ ์ง๊ธ๊ณผ ๊ฐ์ด ์ด๋ง์ด๋งํ์ง ์์๋ค. ์น์ ๊ตฌ์ฑํ๋ HTML์ด๋ JavaScript ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ง๊ธ์ ๋นํด์ ํจ์ฌ ์์๊ณ , ์๋น์ค์ ์ ์ง๋ณด์๋ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์๋ค. ๊ทธ๋ฌ๋.. ์ ์ ๊ธฐ์ ์ด ๋ฐ๋ฌํ๋ฉด์ ํ์ผ ํ๋ ๋น ์ฝ๋์ ์๊ณผ ์น์ ๊ตฌ์ฑํ๋ ํ์ผ์์ ๋ํ ์ปค์ง๊ฒ ๋๋ค. ํ๋์ ์น์๋น์ค์ ๋ง๊ฒ๋ ์์ฒ๊ฐ์ JavaScript ํ์ผ์ ๋ค๋ฃจ๊ฒ ๋๋ฉด์ ์๊ฑฑ๊ฑฐ๋ฆฌ๋ ์๋ฆฌ๊ฐ ๋ค๋ ค์ค๊ธฐ ์์ํ๋ค.
ํ์ผ๊ฐ์ ์ค๋ณต๋ ์ด๋ฆ ์ฌ์ฉ์ผ๋ก ์ธํ ์ถฉ๋
๋๊ท๋ชจ ์นํ์ด์ง์ ๊ฒฝ์ฐ, ํ์ฌ๋์ด ์๋ ์ฌ๋ฌ์ฌ๋ฆผ์ด ์น ์๋น์ค ๊ฐ๋ฐ์ ์ฐธ์ฌํ๋ฏ๋ก ์๋ก ๋ง๋ ํจ์๋ช ๊ณผ ๋ณ์๋ช ์ด ๊ฒน์น๋ ์ผ์ด ์ผ์ด๋๊ธฐ ๋ง๋ จ์ด๋ค. ์ด๋ ๊ฒ ํจ์๋ช ๊ณผ ๋ณ์๋ช ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ธ์ ์ด๋์ ์ถฉ๋์ด ์ผ์ด๋ ์ง ๋ชจ๋ฅด๋ ์ํ์ด ์กด์ฌํ๋ค.
ํ์ผ ์ ์ก ์๋ ๋ฌธ์
์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ URI๋ฅผ ์ ๋ ฅํ๋ฉด ์๋ฒ๋ ๊ทธ์ ํด๋นํ๋ ํ์ผ์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ํ์ผ์ ์์ด ๋ง์์๋ก ์ฌ์ฉ์์๊ฒ ํด๋น ํ์ผ์ ์ ๊ณตํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
๊ฒ๋ค๊ฐ, ํ์ผ ํ๋ ๋น ํฌ๊ธฐ๋ ํฌ๋ค๋ฉด ์ฌ์ฉ์๋ ์์ฒญํ ์น ์๋น์ค๋ฅผ ๋ฐ๊ธฐ๊น์ง ์ค๋ ์๊ฐ ๊ธฐ๋ค๋ ค์ผ ํ๋ค.๊ทธ๋ ๋ค๊ณ ํ์ผ ํ๋์ ๋ชจ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ธฐ์ ์ถํ ์ ์ง๋ณด์ ์ธก๋ฉด์์๋ ์ต์ ์ ๋ฐฉ๋ฒ!!
โ ์์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด, ์น ์ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ํ์ผ์ "ํ๋๋ก ๋ฌถ๋" ๊ธฐ๋ฅ์ ํ๋ ๋ฒ๋ค๋ฌ๊ฐ ํ์ํ๊ฒ ๋์๋ค.
Bundler๋ ์ด๋ค ์ผ์ ํ๋๊ฐ?
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ํ์ผ์ "ํ๋๋ก ๋ฌถ๋" ๊ธฐ๋ฅ
๋ธ๋ผ์ฐ์ ์์๋ ๊ฐ ํ์ผ ๋ณ๋ก ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ ํ๋ฒ์ ์์ฒญ์ผ๋ก ๋ชจ๋ ํ์ผ์ ๋ฐ์ ์ ์๋ค.
๊ฐ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ ๊ด๊ณ๋ฅผ ํ์ ํ๋ฉฐ ์ฌ๋ฐ๋ฅธ ์์๋ก ๋ชจ๋์ด ๋ถ๋ฌ์์ง๊ณ ์คํ๋๋ ๊ฒ์ ๋ณด์ฅํด์ค๋ค.
ํธ๋์คํ์ผ๋ฌ ๋ฐ ์ปดํ์ผ๋ฌ ์ญํ๋ ๊ฒธํ๋ค.
Bundler Tools
๐ ๏ธ Parcel
๋ฉํฐ์ฝ์ด ํ๋ก์ธ์ฑ์ผ๋ก ๋ถ๊ฝ ํ๊ฒ ๋น ๋ฅธ ์ฑ๋ฅ ์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋ฉ์ธ ๋ฌธ๊ตฌ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ด ๋ฒ๋ค๋ฌ๋ ์ฃผ์ฅํ๊ธธ webpack๋ณด๋ค 2๋ฐฐ ๊ฐ๋ ๋น ๋ฅธ ์๋์ ๋ฒ๋ค๋ง์ ์ ๊ณตํ๋ค๊ณ ํ๋ค.
์ฅ์ 1 : webpack์ ๊ท์ฐฎ์ ์ด๊ธฐ ์ค์ (webpack.config.js)๊ณผ ๊ฐ์ ์ค์ ์ด ํ์๊ฐ ์๋ค๋ ๊ฒ
์ฅ์ 2 : ๋จ์ํ ์ค์นํ๊ณ ํฐ๋ฏธ๋์ ํตํด ๋ช ๋ นํ๋ ๊ฒ๋ง์ผ๋ก ๋๋ถ๋ถ์ ๋ช ๋ น์ ์คํํ ์ ์๋ค๋ ๊ฒ์ ํฐ ์ฅ์
์ฅ์ 3 : ์๊ท๋ชจ ํ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ์ฌ์ฉํ๊ธฐ ์ข์ ๋ฒ๋ค๋ฌ
๐ ๏ธ webpack
2012๋ ๋์ ์ถ์ํ ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฒ๋ค๋ฌ
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํจํค์ง์ธ CRA(create-react-app)์ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋์ด์๋ ๋ฒ๋ค๋ฌ๊ฐ ๋ฐ๋ก Webpack
์ฅ์ : ์ปค๋ฎค๋ํฐ๊ฐ ํฌ๊ณ ์ค๋๋ ๋งํผ ์๋ง์ ์๋ํํฐ ํ๋ฌ๊ทธ์ธ๋ค์ ์ฌ์ฉํ ์ ์๋ค.
๋จ์ : ์ดํ ์ถ์๋ ๋ฒ๋ค๋ฌ๋ค๋ณด๋ค ์๋์ ์ผ๋ก ๋๋ฆฐ ์ฒ๋ฆฌ์๋ ๊ทธ๋ฆฌ๊ณ ๋ฒ๊ฑฐ๋ก์ด ํ๊ฒฝ ์ธํ
๐ ๏ธ rollup
webpack๊ณผ ์ ์ฌํ ๋ฒ๋ค๋ฌ
Webpack๊ณผ Parcel์ ๊ฒฝ์ฐ ์์ฒด ๋ก๋๋ฅผ ํตํด commonJSํํ(require()ํํ)๋ก ๋ฒ๋ค๋ง์ด ์งํ๋์ง๋ง, Rollup์ ๊ฒฝ์ฐ ES๋ชจ๋(es6์ import, export)๋ก ๋ฒ๋คํ ์ ์๋ค.
์ฅ์ : ๋์๋ฆฌ์ ๋ฐ๋ผ ์ค๋ณต์ฝ๋๊ฐ ์ ๊ฑฐ๋์ง ์๊ณ ์ฉ๋์ด ํฐ webpack์ ๋นํด ์ค๋ณต์ฝ๋๊ฐ ์ ๊ฑฐ๋๊ณ ์์ฒด ์ฉ๋์ด ์๋ค.
๋จ์ : entry(in, out)์ด ๋ง์์ง ์๋ก ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ณ plugin์ ์ค์ ์ด ์์ ๋กญ์ง ๋ชปํ๋ค.
โ๐ป Bundler Tools์ ๋ํ ๋์ ์๊ฐ
node.js ํ๊ฒฝ์์ ๊ฐ๋ฐ์ ํด๋ณธ์ ์ด ์๋ค. parcel ์ค์นํ๊ณ ์ธํ ํด๋ณด๋ฉด์ ์ฒ์ ๋ฒ๋ค๋ฌ๋ฅผ ์ ํด๋ณธ๋ค. webpack ๋จ์ด๋ ๋ง์ด ๋ค์ด๋ดค์ง๋ง, ์ด๊ฒ ๋ฒ๋ค๋ฌ์ธ์ง๋ ๋ชฐ๋๋ค
Parcel
,webpack
,rollup
, ์ ๋ฆฌํ 3๊ฐ์ง ๋ฒ๋ค๋ฌ๊ฐ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค. ์ด๊ฒ ๋ง๊ณ ๋ ์๋ก์ด ๋ฒ๋ค๋ฌ๋ค์ด ์๊ฒจ๋๊ณ ์๋ ๊ฒ ๊ฐ๋ค. ์ค์ํ ๊ฑด ๋ฒ๋ค๋ฌ์ ๋์ ๋ฐฉ์์ ์ดํดํ๊ณ ํ๋ก์ ํธ ๋ง๋ค ์๋ง์ ๋ฒ๋ค๋ฌ๋ฅผ ์ฐ๋๊ฒ ํต์ฌ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฒ๋ค๋ฌ์ ๋์ ๋ฐฉ์์ ๋ํ ์ถ๊ฐ ๊ณต๋ถ๊ฐ ํ์ํด๋ณด์ธ๋ค.
๐ ์ฐธ๊ณ
Last updated