Webpack01
๐ก ํ๋ก ํธ์๋ ๊ฐ๋ฐํ๊ฒฝ์ ๋ํด์ ์ ์ดํดํ๊ธฐ ์ํด์ ๊ฐ์ฅ ํ์์ธ Webpack(์นํฉ).
์นํฉ์ด๋ ๋ฌด์์ด๊ณ , ์ํธ๋ฆฌ์ ์์ํ์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Webpack(์นํฉ)์ด๋?
๋ชจ๋๋ก ๊ฐ๋ฐ์ ํ๊ฒ๋๋ฉด, ๋ชจ๋๊ฐ์ ์์กด ๊ด๊ณ๊ฐ ์๊น๋๋ค. (ํ๋์ ๋ชจ๋์ธ JS์์ ๋ค๋ฅธ ๋ชจ๋์ import ํ๋ ๋ฐฉ์์
๋๋ค.)
-> App.js๊ฐ math.js๋ฅผ ๋ถ๋ฌ์ค๋ ํ์์ด๋ผ๋ฉด, ๊ทธ๋ผ app.js๋ math.js๋ฅผ ๋ถ๋ฌ์ค๋ ์์กด ๊ด๊ณ์ ์๋ค๊ณ ํฉ๋๋ค.
์ด์ฒ๋ผ, Webpack(์นํฉ)์ ์ฌ๋ฌ๊ฐ์ js ํ์ผ์ ํ๋๋ก ๋ฌถ์ด์ฃผ๋ ์ญํ ์ ํ๋๋ฐ ์ด๋ฅผ ๋ฒ๋ค ์ด๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋์ Webpack(์นํฉ)์ ๋ฒ๋ค๋ฌ๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
- Webpack(์นํฉ) ํจํค์ง: ๋ฒ๋ค ์์ ์ ํ๋ ๊ฒ
- webpack-cli: Webpack(์นํฉ)์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ
์ํธ๋ฆฌ์ ์์ํ
์ํธ๋ฆฌ(entry point): ํ๋์ ์์์
์ํธ๋ฆฌ๋ก๋ถํฐ ๋ชจ๋ ์์กด์ ์ธ ๋ชจ๋์ ์ ๋ถ ์ฐพ์๋ด์ ํ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์ด๋
๋๋ค.
-> app.js๋ถํฐ ์์ํด math.js ํ์ผ์ ์ฐพ์ ๋ค ํ๋์ ํ์ผ๋ก ๋ง๋๋ ๊ฒ์ฒ๋ผ!
๋ฒ๋ค ๊ฒฐ๊ณผ ์ ์ฅํ๊ธฐ
- โmode๋ ์นํฉ ์คํ ๋ชจ๋๋ ์๋ฏธํ๋๋ฐ ๊ฐ๋ฐ ๋ฒ์ ์ธ development๋ฅผ ์ง์
- โentry๋ ์์์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ์ต์
- โoutput์ ๋ฒ๋ค๋ง ๊ฒฐ๊ณผ๋ฌผ์ ์์นํ ๊ฒฝ๋ก
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด dist/main.js์ ๋ฒ๋ค๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋ฉ๋๋ค.
node_modules/.bin/webpack --mode development --entry ./src/app.js --output-path dist/

Webpack(์นํฉ) ์ค์ ํ์ผ
๊ธฐ๋ณธ ํ์ผ๋ช
- webpack.config.js
- webpackfile.js
ํ์ผ ์ค์ ๋ฐ ์ค๋ช
const path = require('path');
module.exports = {
mode: 'development',
entry: {
main: './src/app.js'
},
output: {
path: path.resolve('./dist'),
filename: '[name].js'
}
}
ํฐ๋ฏธ๋์์ ์ฌ์ฉํ ์ต์
์ธ mode, entry, ouput์ ์ค์ ํฉ๋๋ค.
output.path๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ path ๋ชจ๋์ resolve() ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ณ์ฐํฉ๋๋ค.
- mode๋ โdevelopmentโ ๋ฌธ์์ด์ ์ฌ์ฉํฉ๋๋ค.
- entry๋ ์ดํ๋ฆฌ์ผ์ด์ ์ง์ ์ ์ธ src/app.js๋ก ์ค์ ํฉ๋๋ค.
- ouput์ ์ค์ ํ โ[name]โ์ entry์ ์ถ๊ฐํ main์ด ๋ฌธ์์ด๋ก ๋ค์ด์ค๋ ๋ฐฉ์์ ๋๋ค.
Webpack(์นํฉ) ์คํ
package.json์์ ์ค์ ํด์ค๋๋ค.
์ ๋ ๋ชจ๋ ์ต์
์ ์นํฉ ์ค์ ํ์ผ๋ก ์ฎ๊ฒผ๊ธฐ ๋๋ฌธ์ ๋จ์ํ webpack ๋ช
๋ น์ด๋ง ์คํํ์์ต๋๋ค. npm run build
๋ก ์นํฉ ์์
์ ์ง์ํ ์ ์์ต๋๋ค.
"scripts": {
"build": "webpack"
}