vue.config.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const path = require('path')
  2. function resolve(dir) {
  3. return path.join(__dirname, dir)
  4. }
  5. const WebpackBundleAnalyzer = require('webpack-bundle-analyzer');
  6. const CompressionWebpackPlugin = require('compression-webpack-plugin')
  7. module.exports = {
  8. // 选项...
  9. publicPath: './',
  10. productionSourceMap: false,
  11. css: {
  12. extract: false,
  13. sourceMap: true,
  14. loaderOptions: {},
  15. },
  16. lintOnSave: false,
  17. devServer: {
  18. overlay: {
  19. warning: false,
  20. errors: false
  21. },
  22. disableHostCheck: true,
  23. },
  24. chainWebpack: (config) => {
  25. // 配置可视化打包结构构成
  26. if (process.env.use_analyzer) {
  27. config.plugin('webpack-bundle-analyzer').use(WebpackBundleAnalyzer.BundleAnalyzerPlugin);
  28. }
  29. //配置 svg-sprite-loader
  30. // 第一步:让其他svg loader不要对src/icons进行操作
  31. config.module
  32. .rule('svg')
  33. .exclude.add(resolve('src/icons/svg')) //注意:路径要具体到存放的svg的路径下,不然会报错
  34. .end()
  35. // 第二步:使用svg-sprite-loader 对 src/icons下的svg进行操作
  36. config.module
  37. .rule('icons')
  38. .test(/\.svg$/)
  39. .include.add(resolve('src/icons/svg')) //注意:路径要具体到存放的svg的路径下,不然会报错
  40. .end()
  41. .use('svg-sprite-loader')
  42. .loader('svg-sprite-loader')
  43. //定义规则 使用时 <svg class="icon"> <use xlink:href="#icon-svg文件名"></use> </svg>
  44. .options({
  45. symbolId: 'icon-[name]'
  46. })
  47. .end()
  48. config.module
  49. .rule('images')
  50. .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
  51. .use('image-webpack-loader')
  52. .loader('image-webpack-loader')
  53. .options({ bypassOnDebug: true })
  54. },
  55. configureWebpack: config => {
  56. let plugins = [
  57. new CompressionWebpackPlugin({
  58. filename: '[path].gz[query]',
  59. algorithm: 'gzip',
  60. test: new RegExp(
  61. '\\.(' + ['js', 'css'].join('|') +
  62. ')$',
  63. ),
  64. threshold: 10240,
  65. minRatio: 0.8,
  66. }),
  67. ]
  68. if (process.env.NODE_ENV !== 'development') {
  69. config.plugins = [...config.plugins, ...plugins]
  70. }
  71. },
  72. }