进行Vue-cli3.0
进行多页面配置的时候遇到了问题。
如果我给vue.confog.js
里的pages
对象加上chunks
参数的话,打包出来的入口index.html里面不会自动引入js文件,导致js根本不执行。
不太明白vue.config.js
里的 pages.chunks
数组里面各个值的意义。有大佬能解释一下吗。官网的两句话完全解释不清楚啊。
https://cli.vuejs.org/zh/conf...
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。
chunks: ['chunk-vendors', 'chunk-common', 'index']
晚点扔源码,暂时上不了github.....
// vue.config.js
const isDev = process.env.NODE_ENV !== 'production'
const businessArray = [
{chunk: 'note', chunkName: '短信通知服务'},
{chunk: 'evaluate', chunkName: '风险评估'}
]
let pages = {}
businessArray.forEach(v => {
pages[v.chunk] = {
// page 的入口
entry: `src/business/${v.chunk}/index.js`,
// 模板来源
template: 'public/index.html',
// 在 dist/index.html 的输出
filename: `business/${v.chunk}/index.html`,
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: v.chunkName,
// 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。
// 加上这个chunks的话,本地跑不起来。没有引入js。不知道为什么
// 而且加不加,打包出来的效果都是一样的
// chunks: ['chunk-vendorssss', 'chunk-common', `${v.chunk}/index.html`]
}
})
module.exports = {
baseUrl: isDev ? '/' : '../',
pages,
assetsDir: 'common'
}
找到问题了。
其
vue-cli3
里的vue.config.js
中的pages
参数是会编译到webpack
中的html-webpack-plugin
的配置里。所以
vue.config.js
中的pages.chunks
也就等同于html-webpack-plugin
中的chunks
。所以参数的意义可以参考这个https://segmentfault.com/a/1190000007294861#articleHeader9可以用
vue-cli-service inspect
命令打印出来的webpack配置
来检查效果另外。
vue.config.js
中的pages
也不止官方给的那几个参数:(entry, template, filename, title 和 chunks
),也可以给pages
传html-webpack-plugin能接受的参数
,比如favicon
(亲测可以,其他参数懒得去尝试)再另外。
跑本地服务器
(vue-cli-service serve)时是不会插入chunk-vendors
和chunk-common
的。要打生产包
(vue-cli-service build)然后看入口index.html才能看到html-webpack-plugin插入了chunk-vendors
和chunk-common
举个例子:
编译过后的
webpack
配置为