健康同学微信公众号h5项目
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

vue.config.js 4.0KB

hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
hace 11 meses
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. const path = require('path');
  2. const defaultSettings = require('./src/config/index.js');
  3. /* const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; */
  4. const resolve = dir => path.join(__dirname, dir);
  5. // page title
  6. const name = defaultSettings.title || 'health-student';
  7. // 生产环境,测试和正式
  8. const IS_PROD = ['production', 'test'].includes(process.env.NODE_ENV);
  9. const { defineConfig } = require('@vue/cli-service');
  10. module.exports = defineConfig({
  11. publicPath: './', // 署应用包时的基本 URL。 vue-router hash 模式使用
  12. // publicPath: '/app/', //署应用包时的基本 URL。 vue-router history模式使用
  13. outputDir: 'dist', // 生产环境构建文件的目录
  14. lintOnSave: !IS_PROD,
  15. productionSourceMap: false, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
  16. devServer: {
  17. port: 9093, // 端口
  18. open: false, // 启动后打开浏览器
  19. hot: true, //热更新
  20. client: {
  21. overlay: false //报错是否显示遮罩层,不显示
  22. }
  23. // proxy: {
  24. // //配置跨域
  25. // '/api': {
  26. // target: "https://test.xxx.com",
  27. // // ws:true,
  28. // changOrigin:true,
  29. // pathRewrite:{
  30. // '^/api':'/'
  31. // }
  32. // }
  33. // }
  34. },
  35. css: {
  36. extract: true, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。
  37. sourceMap: false,
  38. loaderOptions: {
  39. scss: {
  40. // 向全局sass样式传入共享的全局变量, $src可以配置图片cdn前缀
  41. // 详情: https://cli.vuejs.org/guide/css.html#passing-options-to-pre-processor-loaders
  42. additionalData: `
  43. @import "assets/css/mixin.scss";
  44. @import "assets/css/variables.scss";
  45. `
  46. }
  47. }
  48. },
  49. configureWebpack: config => {
  50. config.name = name;
  51. // 为生产环境修改配置...
  52. },
  53. chainWebpack: config => {
  54. // 别名 alias
  55. config.resolve.alias
  56. .set('@', resolve('src'))
  57. .set('assets', resolve('src/assets'))
  58. .set('api', resolve('src/api'))
  59. .set('views', resolve('src/views'))
  60. .set('components', resolve('src/components'));
  61. /**
  62. * 设置保留空格
  63. */
  64. config.module
  65. .rule('vue')
  66. .use('vue-loader')
  67. .loader('vue-loader')
  68. .tap(options => {
  69. options.compilerOptions.preserveWhitespace = true;
  70. return options;
  71. })
  72. .end();
  73. /**
  74. * 打包分析
  75. */
  76. if (IS_PROD) {
  77. /* config.plugin('webpack-report').use(BundleAnalyzerPlugin, [
  78. {
  79. analyzerMode: 'static'
  80. }
  81. ]); */
  82. }
  83. config
  84. // https://webpack.js.org/configuration/devtool/#development
  85. .when(!IS_PROD, config => config.devtool('cheap-source-map'));
  86. config.when(IS_PROD, config => {
  87. config.optimization.splitChunks({
  88. chunks: 'all',
  89. cacheGroups: {
  90. // cacheGroups 下可以可以配置多个组,每个组根据test设置条件,符合test条件的模块
  91. commons: {
  92. name: 'chunk-commons',
  93. test: resolve('src/components'),
  94. minChunks: 3, // 被至少用三次以上打包分离
  95. priority: 5, // 优先级
  96. reuseExistingChunk: true // 表示是否使用已有的 chunk,如果为 true 则表示如果当前的 chunk 包含的模块已经被抽取出去了,那么将不会重新生成新的。
  97. },
  98. node_vendors: {
  99. name: 'chunk-libs',
  100. chunks: 'initial', // 只打包初始时依赖的第三方
  101. test: /[\\/]node_modules[\\/]/,
  102. priority: 10
  103. },
  104. vantUI: {
  105. name: 'chunk-vantUI', // 单独将 vantUI 拆包
  106. priority: 20, // 数字大权重到,满足多个 cacheGroups 的条件时候分到权重高的
  107. test: /[\\/]node_modules[\\/]_?vant(.*)/
  108. }
  109. }
  110. });
  111. config.optimization.runtimeChunk('single');
  112. });
  113. }
  114. });