여러 제품이나, 코드, 프로그램을 묶어서 패키지로 제공하는 행위
Webpack이란 여러 개의 파일을 하나의 파일로 합쳐주는 모듈 번들러를 의미합니다. (모듈 번들러란 HTML, CSS, JavaScript 등의 자원을 전부 각각의 모듈로 보고 이를 조합해 하나의 묶음으로 번들링(빌드)하는 도구입니다.)
Webpack이 필요한 가장 큰 이유는 웹 애플리케이션의 빠른 로딩 속도와 높은 성능을 위해서입니다.
Webpack의 config 파일 예시
module.exports = {
target: ["web", "es5"],
entry: "./src/script.js",
output: {
path: path.resolve(__dirname, "docs"),
filename: "app.bundle.js",
clean: true
},
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"],
exclude: /node_modules/,
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: path.resolve(__dirname, "src", "index.html"),
}),
new MiniCssExtractPlugin(),
],
optimization: {
minimizer: [
new CssMinimizerPlugin(),
]
}
};
module.exports = {
target: ["web", "es5"],
};
//기본 값
module.exports = {
...
entry: "./src/index.js",
};
//지정 값
module.exports = {
...
entry: "./src/script.js",
};
const path = require('path');
module.exports = {
...
output: {
path: path.resolve(__dirname, "docs"), // 절대 경로로 설정을 해야 합니다.
filename: "app.bundle.js",
clean: true
},
};
module.exports = {
...
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"],
exclude: /node_modules/,
},
],
},
};
text
: 변환이 필요한 파일들을 식별하기 위한 속성use
: 변환을 수행하는데 사용되는 로더를 가리키는 속성exclude
: 바벨로 컴파일하지 않을 파일이나 폴더를 지정. (반대로 include
속성을 이용해 반드시 컴파일해야 할 파일이나 폴더 지정 가능)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(),
],
};
require()
를 통해 플러그인을 먼저 요청해야 합니다. 그리고 plugins 배열에 사용하고자 하는 플러그인을 추가해야 합니다.new
연사자를 사용해 호출하여 플러그인의 인스턴스를 만들어줘야 합니다.module.exports = {
...
optimization: {
minimizer: [
new CssMinimizerPlugin(),
]
}
};
TerserPlugin
또는 optimization.minimize
에 명시된 plugins로 bundle 파일을 최소화(=압축)시키는 작업 여부를 결정defualt minimizer
을 커스텀된 TerserPlugin
인스턴스를 제공해서 재정의할 수 있습니다.