环境
vue-cli 5 版本已经将 webpack 版本升级为5版本
terser-webpack-plugin 插件 vue-cli 自带,无需自己安装,直接配置就可以。
我的环境
"@vue/cli-service": "~5.0.0",
不使用插件配置
module.exports = {
configureWebpack: config => {
// 环境判断
if (process.env.NODE_ENV === 'production') {
// 为生产环境修改配置...
config.optimization.minimizer[0].options.minimizer.options.compress = Object.assign(
config.optimization.minimizer[0].options.minimizer.options.compress,
{
drop_console: true
}
);
} else {
// 为开发环境修改配置...
}
}
};
terser-webpack-plugin插件使用
vue.config.js 中配置
const TerserPlugin = require('terser-webpack-plugin')
configureWebpack: (config) => {
config.output.filename = `static/js/[name]-[hash].js`
config.output.chunkFilename = `static/js/[name]-[hash].js`
// 为生产环境修改配置...
if (process.env.NODE_ENV === 'production') {
config.plugins.push(
new TerserPlugin({
terserOptions: {
ecma: undefined,
warnings: false,
parse: {},
compress: {
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log'] // 移除console
}
}
})
)
}
},
环境变量文件
.env.development文件
NODE_ENV = 'development'
VUE_APP_ENV = 'development'
VUE_APP_BASE_API = '/api'
VUE_CLI_BABEL_TRANSPILE_MODULES = true
.env.production 文件
NODE_ENV = 'production'
VUE_APP_ENV = 'production'
VUE_APP_BASE_API = '/api'
.env.test 文件
NODE_ENV = 'production'
VUE_APP_ENV = 'test'
VUE_APP_BASE_API = '/api'
编译打包test的时候执行
npm run test
注意:编译的时候一定要是NODE_ENV = 'production'
,否则打包后vue.config.js
里配置的无效,如果需要判断打包使用不同环境的配置,可以使用VUE_APP_
创建新的变量用来判断。
创建config.js
const config = {
development: {
api: 'http://www.dev.api.huhaowb.com'
},
test: {
api: 'http://www.test.api.huhaowb.com'
},
production: {
api: 'http://www.api.huhaowb.com'
}
}
module.exports = {
baseUrl: config[process.env.VUE_APP_ENV]['api']
}
使用
import { baseUrl } from './config.js'
package.json文件
"scripts": {
"serve": "vue-cli-service serve",
"test": "vue-cli-service build --mode test",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
vue-cli 4.x 版本,配置如下
module.exports = {
configureWebpack: config => {
// 环境判断
if (process.env.NODE_ENV === 'production') {
// 为生产环境修改配置...
config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true;
} else {
// 为开发环境修改配置...
}
}
};