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
相似问题