서버/Webpack
Webpack5 - 빌드 전 bundle, 원하는 디렉토리 삭제하고 빌드하기
탐훈
2024. 11. 28. 12:37
728x90
빌드시 임시 이미지 저장 파일디렉토리와 같은 것을 삭제하기 좋다.
1. 라이브러리 가져오기
npm install clean-webpack-plugin --save-dev
2. webpack.config.js 설정
// can't use ecma script module. use only common.js
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
// ↓↓↓↓↓↓ 추가하기
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
// minimum option
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.[contenthash].js',
path: path.resolve(__dirname, './dist'),
/**
* publicPath
* under version 4: publicPath is empty('').
* over version 4: publicPath is auto
*
* can use list
* 1. 'dist/'
* 2. 'https://image.oliveyoung.co.kr/uploads/contents/202410/25oyDay/pc_visual.jpg'
*/
publicPath: 'dist/'
},
mode: 'none',
module: {
/**
* webpack: I don't know what that menas 'import Kiwi...'
* me: thank you for asking, If you don't know somethig, you should check out the rules.
* webpack: perfect
*/
rules: [
{
test: /\.(png|jpg)$/,
/**
* asset/inline :bake image into base64. could be larger file size(more better)
* asset/resource: request image each of them. cost of call is larger
*/
type: 'asset',
parser: {
dataUrlCondition: {
maxSize: 3 * 1024 // 3kilobyte
}
}
},
{
test: /\.txt$/,
type: 'asset/source'
},
{
// loader should be installed explicitly
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader, 'css-loader'
]
},
{
test: /\.scss$/,
// webpack invoke right to left in array
//
use: [
MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'
]
},
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/env'],// ecmascript 8,7,6,5 make down version
plugins: ['@babel/plugin-proposal-class-properties']
}
}
}
],
},
plugins: [
new TerserPlugin(),
new MiniCssExtractPlugin({
filename: 'style.[contenthash].css',
}),
// ↓↓↓↓↓↓ 추가하기
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: [
'**/*',
path.join(process.cwd(), 'build/')
]
})
]
}
3.
cleanOnceBeforeBuildPatterns는
클린시켜 줄 디렉토리를 설정한다.
build 하위에 있는
**/*
모든 파일을 삭제한다는 의미이다.