vue.config.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const path = require('path');
  2. const CompressionWebpackPlugin = require("compression-webpack-plugin")
  3. const productionGzipExtensions = ['js', 'css']
  4. function resolve(dir) {
  5. return path.join(__dirname, dir)
  6. }
  7. let title = '';
  8. if (process.env.VUE_APP_NODE_NAME == 'production') {
  9. title = ''
  10. } else if (process.env.VUE_APP_NODE_NAME == 'test') {
  11. title = '(测试)'
  12. } else {
  13. title = '(开发)'
  14. }
  15. const Timestamp = new Date().getTime();
  16. module.exports = {
  17. pages: {
  18. index: {
  19. entry: 'src/main.js',
  20. template: 'public/index.html',
  21. filename: 'index.html',
  22. title: '12355' + title,
  23. }
  24. },
  25. publicPath: './',
  26. outputDir: 'dist/' + process.env.OUT_PUT_NAME,
  27. assetsDir: 'static',
  28. lintOnSave: false,
  29. devServer: {
  30. host: '0.0.0.0',
  31. port: 8080,
  32. //解析缓存
  33. disableHostCheck: true,
  34. //支持gzip
  35. compress: true,
  36. },
  37. //不输出map
  38. productionSourceMap: false,
  39. chainWebpack: (config) => {
  40. config.entry.app = ['babel-polyfill', './src/main.js']
  41. config.resolve.alias
  42. .set('@', resolve('./src/'))
  43. config.plugins.delete('preload-index');
  44. config.plugins.delete('prefetch-index');
  45. config.optimization.minimize(true);
  46. },
  47. configureWebpack: config => {
  48. /* //开启gzip压缩,需要配置Nginx服务器gzip选项开启
  49. config.plugins.push(
  50. new CompressionWebpackPlugin({
  51. filename: '[path].gz[query]',
  52. algorithm: 'gzip',
  53. test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
  54. threshold: 10240,
  55. minRatio: 0.8
  56. })
  57. ); */
  58. config.output.filename = `./static/js/[name].${Timestamp}.js`
  59. config.output.chunkFilename = `./static/js/[name].${Timestamp}.js`
  60. config.performance = {
  61. hints: 'warning',
  62. //入口起点的最大体积 整数类型(以字节为单位)
  63. maxEntrypointSize: 50000000,
  64. //生成文件的最大体积 整数类型(以字节为单位 300k)
  65. maxAssetSize: 30000000,
  66. //只给出 js 文件的性能提示
  67. assetFilter: function(assetFilename) {
  68. return assetFilename.endsWith('.js');
  69. }
  70. }
  71. },
  72. css: {
  73. extract: {
  74. filename: `./static/css/[name].${Timestamp}.css`,
  75. chunkFilename: `./static/css/[name].${Timestamp}.css`
  76. },
  77. sourceMap: false,
  78. loaderOptions: {
  79. // 给 sass-loader 传递选项
  80. sass: {
  81. // @/ 是 src/ 的别名
  82. // prependData: `@import "@/assets/scss/base.scss";`
  83. }
  84. }
  85. }
  86. };