사용자에게 전달할 파일을 묶어주는 과정
- 여러개의 파일을 하나의 파일로 합쳐줌
- HTML, CSS, JS 등의 자원을 전부 각각의 모듈로 보고
이를 하나의 묶음으로 조합해 번들링하는 도구- 웹팩 외에도 parcel, rollup 등의 다른 번들러들도 있다.
코드의 시작점
<webpack.config.js>
module.exports = {
...
entry: "./src/index.js",
};
하나로 만들어진 파일을 어디로 보낼지 지정
<webpack.config.js>
const path = require('path');
module.exports = {
...
output: {
path: path.resolve(__dirname, "docs"), // 절대 경로로 설정을 해야 합니다.
filename: "app.bundle.js",
clean: true
},
};
loader를 사용하면 js, json파일이 아닌 파일도 처리 가능
ex) CSS 합치기
<webpack.config.js>
module.exports = {
...
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"],
exclude: /node_modules/,
},
],
},
};
번들 최적화, 에셋 관리, 환경 변수 주입 등 광범위한 작업 수행
플러그인 사용을 위해서는 require()를 통해 플러그인을 먼저 요청해야 함
ex) HTML 합치기
<webpack.config.js>
const webpack = require('webpack');
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
...
plugins: [
new HtmlWebpackPlugin({
template: path.resolve(__dirname, "src", "index.html"),
}),
new MiniCssExtractPlugin(),
],
};
개발이 완료된 앱을 배포하기 위해 하나의 폴더로 구성하여 준비하는 작업
react앱을 기준으로,
npm run build를 실행하면=>
index.html에 파일 압축 & 배포 최적화된 상태가 됨