38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
|
module.exports = (api, options) => {
|
||
|
api.chainWebpack(webpackConfig => {
|
||
|
if (process.env.NODE_ENV === 'production') {
|
||
|
const isLegacyBundle = process.env.VUE_CLI_MODERN_MODE && !process.env.VUE_CLI_MODERN_BUILD
|
||
|
const getAssetPath = require('../util/getAssetPath')
|
||
|
const filename = getAssetPath(
|
||
|
options,
|
||
|
`js/[name]${isLegacyBundle ? `-legacy` : ``}${options.filenameHashing ? '.[contenthash:8]' : ''}.js`
|
||
|
)
|
||
|
|
||
|
webpackConfig
|
||
|
.mode('production')
|
||
|
.devtool(options.productionSourceMap ? 'source-map' : false)
|
||
|
.output
|
||
|
.filename(filename)
|
||
|
.chunkFilename(filename)
|
||
|
|
||
|
// keep module.id stable when vendor modules does not change
|
||
|
webpackConfig
|
||
|
.plugin('hash-module-ids')
|
||
|
.use(require('webpack/lib/HashedModuleIdsPlugin'), [{
|
||
|
hashDigest: 'hex'
|
||
|
}])
|
||
|
|
||
|
// disable optimization during tests to speed things up
|
||
|
if (process.env.VUE_CLI_TEST) {
|
||
|
webpackConfig.optimization.minimize(false)
|
||
|
} else {
|
||
|
const TerserPlugin = require('terser-webpack-plugin')
|
||
|
const terserOptions = require('./terserOptions')
|
||
|
webpackConfig.optimization.minimizer([
|
||
|
new TerserPlugin(terserOptions(options))
|
||
|
])
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|