prod.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. module.exports = (api, options) => {
  2. api.chainWebpack(webpackConfig => {
  3. if (process.env.NODE_ENV === 'production') {
  4. const isLegacyBundle = process.env.VUE_CLI_MODERN_MODE && !process.env.VUE_CLI_MODERN_BUILD
  5. const getAssetPath = require('../util/getAssetPath')
  6. const filename = getAssetPath(
  7. options,
  8. `js/[name]${isLegacyBundle ? `-legacy` : ``}${options.filenameHashing ? '.[contenthash:8]' : ''}.js`
  9. )
  10. webpackConfig
  11. .mode('production')
  12. .devtool(options.productionSourceMap ? 'source-map' : false)
  13. .output
  14. .filename(filename)
  15. .chunkFilename(filename)
  16. // keep module.id stable when vendor modules does not change
  17. webpackConfig
  18. .plugin('hash-module-ids')
  19. .use(require('webpack/lib/HashedModuleIdsPlugin'), [{
  20. hashDigest: 'hex'
  21. }])
  22. // disable optimization during tests to speed things up
  23. if (process.env.VUE_CLI_TEST) {
  24. webpackConfig.optimization.minimize(false)
  25. } else {
  26. const TerserPlugin = require('terser-webpack-plugin')
  27. const terserOptions = require('./terserOptions')
  28. webpackConfig.optimization.minimizer([
  29. new TerserPlugin(terserOptions(options))
  30. ])
  31. }
  32. }
  33. })
  34. }