vue.config.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. const path = require('path')
  2. const resolve = dir => path.join(__dirname, '.', dir)
  3. module.exports = {
  4. /**
  5. * baseUrl等价于webpack打包的资源引用的publishPath和全局的BASER_URL变量
  6. */
  7. publicPath: './',
  8. // 打包的静态资源相对outputDir的路径,outputDir使用默认值'dist'
  9. assetsDir: 'static',
  10. /**
  11. * 开启保存自动代码检测,设置true可配合derServer overlay浏览器上显示错误,强制进行代码检测
  12. * 也可设置error可直接阻断打包
  13. */
  14. lintOnSave: 'error',
  15. // 默认不使用template渲染模式,明确只使用运行时打包项目
  16. runtimeCompiler: false,
  17. /**
  18. * 开发环境还是使用默认的 inline-source-map
  19. */
  20. productionSourceMap: false,
  21. /**
  22. * 给插入index.html的link、script标签添加crossorigin属性
  23. */
  24. // crossorigin: 'anonymous',
  25. css: {
  26. loaderOptions: {
  27. less: {
  28. lessOptions: {
  29. modifyVars: {
  30. hack: `true; @import "@/styles/vant-ui.less";`
  31. }
  32. }
  33. }
  34. }
  35. },
  36. chainWebpack: config => {
  37. // config
  38. // .plugin('webpack-bundle-analyzer')
  39. // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  40. // 提取 manifest(runtime)
  41. config.optimization
  42. .runtimeChunk({
  43. name: 'manifest'
  44. })
  45. // 代码分包调整
  46. config.optimization
  47. .splitChunks({
  48. chunks: 'all',
  49. cacheGroups: {
  50. libs: {
  51. name: 'chunk-libs',
  52. test: /[\\/]node_modules[\\/]/,
  53. chunks: 'initial' // 只打包初始时依赖的第三方
  54. },
  55. commons: {
  56. name: 'chunk-commons',
  57. test: resolve('src'), // 可自定义拓展你的规则
  58. chunks: 'initial',
  59. reuseExistingChunk: true
  60. }
  61. }
  62. })
  63. // config.module
  64. // .rule('scss')
  65. // .loader('sass-resources-loader')
  66. // .options({
  67. // resources: path.resolve('src/styles/global.scss')
  68. // })
  69. // .end()
  70. config.module
  71. .rule('svg')
  72. .exclude.add(resolve('src/icons'))
  73. .end()
  74. config.module
  75. .rule('icons')
  76. .test(/\.svg$/)
  77. .include.add(resolve('src/icons'))
  78. .end()
  79. .use('svg-sprite-loader')
  80. .loader('svg-sprite-loader')
  81. .options({
  82. symbolId: 'icon-[name]'
  83. })
  84. .end()
  85. config.resolve.alias
  86. .set('src', resolve('src'))
  87. .set('@', resolve('src'))
  88. .set('@api', resolve('src/api'))
  89. .set('@components', resolve("src/components"))
  90. .set('@assets', resolve('src/assets'))
  91. .set('@store', resolve('src/store'))
  92. .set('@utils', resolve('src/utils'))
  93. .set('@views', resolve('src/views'))
  94. // .set('@', resolve('public'))
  95. // 给异步加载的静态资源标签添加crossorigin属性
  96. config.output.crossOriginLoading('anonymous')
  97. },
  98. }