var fs = require('fs')
const path = require('path')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
function resolve (dir) {
return path.join(__dirname, dir)
}
const address = require('address')
const localhost = address.ip() || 'localhost'
if (process.env.VUE_APP_ENV) {
const path = './serverconfig/nginx/online/conf.d'
const readable = fs.createReadStream(path + '/cl.mw.emao.com.' + process.env.VUE_APP_ENV + '.conf.txt')
const writable = fs.createWriteStream(path + '/cl.mw.emao.com.conf')
readable.pipe(writable)
}
module.exports = {
chainWebpack: (config) => {
config.resolve.alias
.set('$api', resolve('src/api'))
.set('$models', resolve('src/components'))
.set('$utils', resolve('src/utils'))
if (process.env.npm_config_report) {
config
.plugin('webpack-bundle-analyzer')
.use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
.end()
}
},
configureWebpack: config => {
if (process.env.NODE_ENV == 'production') {
config.mode = 'production'
config.optimization.minimizer = [
new UglifyJsPlugin({
uglifyOptions: {
output: {
comments: false
},
compress: {
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log']
},
warnings: false
}
})
]
config.externals = {
vue: 'Vue',
vuex: 'Vuex',
'vue-router': 'VueRouter',
axios: 'axios'
}
config.plugins = [
...config.plugins,
new CompressionWebpackPlugin({
test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
threshold: 10240,
minRatio: 0.8,
deleteOriginalAssets: false
})
]
} else {
config.mode = 'development'
}
config.externals = {
'BMapGL': 'BMapGL',
'mapvgl': 'mapvgl'
}
},
devServer: {
open: process.platform === 'darwin',
disableHostCheck: false,
host: localhost,
port: 6650,
https: false,
hotOnly: false,
proxy: null
}
}