多配置文件
可以使用多个配置文件,把相同的配置项放在一个通用配置文件中,再为开发环境和生产环境写一个基于通用配置的配置文件。打包时加上 config 参数 —— “— config 文件名” 来指定使用的配置文件。
// 通用配置文件// webpack.common.jsconst HtmlWebpackPlugin = require('html-webpack-plugin')module.exports = {entry: './src/main.js',output: {filename: 'js/bundle.js'},module: {rules: [{test: /\.css$/,use: ['style-loader','css-loader']},{test: /\.(png|jpe?g|gif)$/,use: {loader: 'file-loader',options: {outputPath: 'img',name: '[name].[ext]'}}}]},plugins: [new HtmlWebpackPlugin({title: 'Webpack Tutorial',template: './src/index.html'})]}
// 开发环境配置文件// webpack.dev.jsconst webpack = require('webpack')const merge = require('webpack-merge')const common = require('./webpack.common')module.exports = merge(common, {mode: 'development',devtool: 'cheap-eval-module-source-map',devServer: {hot: true,contentBase: 'public'},plugins: [new webpack.HotModuleReplacementPlugin()]})
// 生产环境配置文件// webpack.prod.jsconst merge = require('webpack-merge')const { CleanWebpackPlugin } = require('clean-webpack-plugin')const CopyWebpackPlugin = require('copy-webpack-plugin')const common = require('./webpack.common')module.exports = merge(common, {mode: 'production',plugins: [new CleanWebpackPlugin(),new CopyWebpackPlugin(['public'])]})
单配置文件
在配置文件中判断打包环境,适用于中小型项目。
module.exports = (env, argv) => {const config = {// 通用配置}if (env === 'production') {config.mode = 'production'config.devtool = falseconfig.plugins = [...config.plugins,new CleanWebpackPlugin(),new CopyWebpackPlugin(['public'])]}return config}
