vue.config.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. },
  49. configureWebpack: config => {
  50. let plugins = [
  51. new CompressionWebpackPlugin({
  52. filename: '[path].gz[query]',
  53. algorithm: 'gzip',
  54. test: new RegExp(
  55. '\\.(' + ['js', 'css'].join('|') +
  56. ')$',
  57. ),
  58. threshold: 10240,
  59. minRatio: 0.8,
  60. }),
  61. ]
  62. if (process.env.NODE_ENV !== 'development') {
  63. config.plugins = [...config.plugins, ...plugins]
  64. }
  65. },
  66. }