VUE-CLI3 创建多页面项目打包配置问题,和splitChunks 该如何优化
来源:6-1 如何编写一个 Loader(1)
 
			Che_
2019-06-23
这里是我vue.config.js配置
const path = require('path')
const glob = require('glob')
const PAGES_PATH = path.resolve(__dirname, './src/pages')
const pages = {}
//配置 pages 目录下的多页面,通过循环获取每一个 page 文件夹下的 html 和 js
glob.sync(PAGES_PATH + '/*/main.js').forEach(filePath => {
  const pageName = path.basename(path.dirname(filePath))
  pages[pageName] = {
    entry: filePath,
    template: path.dirname(filePath) + '/index.html',
    filename: `${pageName}.html`,
    chunks: ['chunk-vendors', 'chunk-common', pageName, `manifest.${pageName}`]
  }
})
module.exports = {
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  pages: pages,
  assetsDir: 'assets',
  lintOnSave: false,
  productionSourceMap: false,
  css: {
    modules: false,
    extract: true,
    sourceMap: false
  },
  parallel: require('os').cpus().length > 1,
  chainWebpack: config => {
    config.module
      .rule('stylus')
      .test(/.styl/)
      .oneOf('vue')
      .resourceQuery(/?vue/)
      .use('px2rem')
      .loader('px2rem-loader')
      .before('postcss-loader')
      .options({
        remUnit: 37.5,
        remPrecision: 8
      }).end()
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => Object.assign(options, { limit: 1024 }))
    config.optimization.splitChunks({
      chunks: 'all',// async表示抽取异步模块,all表示对所有模块生效,initial表示对同步模块生效
      cacheGroups: {
        vendors: {
          test: /[\/]node_modules[\/]/,// 指定是node_modules下的第三方包
          name: 'chunk-vendors',
          chunks: 'all',
          priority: -10   // 抽取优先级
        },
        // 抽离自定义工具库
        utilCommon: {
          name: 'chunk-common',
          minSize: 1024, // 将引用模块分离成新代码文件的最小体积
          minChunks: 2, // 表示将引用模块如不同文件引用了多少次,才能分离生成新chunk
          priority: -20
        }
      }
    })
    config.optimization.runtimeChunk({
      name: entryPoint => `manifest.${entryPoint.name}`
    })
    // 移除 preload
    glob.sync(PAGES_PATH + '/*/main.js').forEach(filePath => {
      const pageName = path.basename(path.dirname(filePath))
      config.plugins.delete(`preload-${pageName}`)
      config.plugins.delete(`prefetch-${pageName}`)
    })
  },
  configureWebpack: {},
  devServer: {}
}
这里是项目结构、
当前配置打包遇到的问题
cacheGroups 中的 utilCommon 组中minSize 设置为 0 打包之后不报错不能正常显示页面,打包出来了奇怪的东西
分离node_modules 中的第三方库
配置 如下
 vendor: {
          test: /[\/]node_modules[\/](vue|vant)[\/]/,
          name: 'chunk-vendors',
          chunks: 'all',
          priority: -10   // 抽取优先级
        }
结果并没有分离出 vue 和 第三方库 vant
已上遇到的问题久久不能解决 ,恳请老师指导
写回答
	2回答
- 
				  小小军 2021-01-22 optimization: { splitChunks: { cacheGroups: { 'element-ui': { test: /[\\/]node_modules[\\/](element-ui|axios)/, chunks: 'all', priority: -5, // 抽取优先级 }, }, }, }, 这样分离没问题哦10
- 
				  Dell 2019-06-27 同学你好,这个涉及到你的业务了,和课程不是特别相关,我建议你再研究下,如果每个同学都问业务上的问题,我就吃不消了。实在不行加我微信dell-js,我抽空帮你看看 00
相似问题
 
						