webpack之开发环境和生产环境的区分
如果我们想根据webpack的配置文件中的mode变量更改行为。那么必须导出一个函数而不是一个对象:const path=require("path")const VueLoaderPlugin = require('vue-loader/lib/plugin')letconfig={//入口entry:"",//出口output:{},...
·
简介
生产环境的配置和开发环境有所不同,比如要设置mode,环境变量,为文件名添加chunk hash
作为版本号等,那么如何让webpack可以按照不同环境采用不同的配置呢?一般来说有两种,相同的配置文件
和不同的配置文件
相同的配置文件
1. 利用node的process.env
// package.json
{
"scripts":{
"dev": "cross-env NODE_ENV=development webpack-dev-server",
"build": "cross-env NODE_ENV=production webpack --config ./config/webpack.config.js"
}
}
这里需要需要注意的是cross-env
,它的作用主要是为了统一不同的操作系统对于NODE_ENV的设置,然后我们就可以在配置文件当中通过process.env.NODE_ENV
来区分环境了。
2. 如果我们想根据webpack
的配置文件中的mode变量更改行为。那么必须导出一个函数而不是一个对象:
const path=require("path")
const VueLoaderPlugin = require('vue-loader/lib/plugin')
let config={
//入口
entry:"",
//出口
output:{},
//loader
module:{
},
//插件
plugins:[
new VueLoaderPlugin()
],
devServer:{'
}
}
module.exports=function(env, argv){
if(argv.mode==="production"){
}else if(argv.mode==='development'){
// config.devtool = 'source-map';
}
return config
}
然后呢,你就需要在package.json
里面输出您当前的环境
{
"name": "vue-ssr",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack --config webpack.config.js --mode=development",
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
},
"dependencies": {
}
}
这时候你执行npm run build
,就会在你导出的函数的第二参数获取到当前mode
的值,第二个参数的结果如下:
{ _: [],
cache: null,
bail: null,
profile: null,
color: { level: 3, hasBasic: true, has256: true, has16m: true },
colors: { level: 3, hasBasic: true, has256: true, has16m: true },
config: 'webpack.config.js',
mode: 'development',
'info-verbosity': 'info',
infoVerbosity: 'info',
'$0': 'node_modules\\_webpack@4.31.0@webpack\\bin\\webpack.js'
}
不同的配置文件
更多推荐
已为社区贡献3条内容
所有评论(0)