生产、开发环境配置的拆分与合并
一般情况下,我们通常在项目的根目录下建立一个webpack.config.js文件,里面包含一些webpack的基本配置,通过mode我们可以设置当前webpack打包时的环境是开发环境(development)还是生产环境(production)
开发环境
代码具有一定的可读性,没有压缩,文件较大
生产环境
代码有经过压缩,文件较小
通常情况下,我们必须手动设置我们webpack的环境
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry: {
main: './src/index.js'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, '../dist')
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
// 模式默认为"production"--->生产环境
mode: "production",
// development -->开发环境
// mode: "development",
}
缺点:需手动切换环境。
下面进行拆分与合并,则可自行切换
拆分与合并
在项目根目录下新建build文件夹,里面包含有三个文件
webpack.base.config.js里面写公共的配置
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry: {
main: './src/index.js'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
}
webpack.dev.config.js里面合并开发环境的配置
webpack-merge依赖包用于合并两个文件的配置项,从中解构出smart方法,并将其重命名为merge
const commonConfig = require('./webpack.base.config')
const { smart: merge } = require('webpack-merge')
const devConfig = {
mode: "development"
}
// 调用smart方法进行合并
module.exports = merge(commonConfig, devConfig)
webpack.prod.config.js里面合并生产环境的配置
const commonConfig = require('./webpack.base.config')
const { smart: merge } = require('webpack-merge')
const prodConfig = {
mode: "production"
}
module.exports = merge(commonConfig, prodConfig)
修改package.json里面的代码,新建两个指令"build:dev"和“build”
{
"name": "learn_webpack",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"build:dev": "webpack --config ./build/webpack.dev.config.js",
"build": "webpack --config ./build/webpack.prod.config.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^5.24.4",
"webpack-cli": "^4.5.0",
"webpack-merge": "^4.2.2"
},
"dependencies": {
"html-webpack-plugin": "^5.3.1"
}
}
这里使用的webpack-merge为4.2.2版本的依赖包
最后
- 在终端中输入npm run build:dev 执行开发环境下webpack的打包
- 在终端中输入npm run build 执行生产环境下webpack的打包