RaveList升级Nuxt.js到2.0+遇到的问题
Nuxt.js升级到2.0+版本后,遇到的问题还真不少,就整理一下。
- 在Nuxt.js 2.0+版本中,
vendor
已经在Webpack 4移除,不再使用CommonsChunkPlugin
,所以打包些公用模块就得另外处理了,而之前的babel-polyfill
就是放在vendor
中的,移除后就改成script
引入本地文件。 - Nuxt 1.0版本打包出的文件很大,通过
build.maxChunkSize
能解决,但是到2.0+版本后,发现这配置好像解决不了问题;通过analyze
分析打包后的情况,单Element-UI
就接近500k了,就尝试着按需应用,不过发现按需引用有点麻烦,因为引用都得自行use这个组件。了解到可以使用build.splitChunks
选项来实现代码分割,就基于RaveList现有的情况配置了分割规则(nuxt自身也有个commons的cacheGroups):
build: {
optimization: {
splitChunks: {
chunks: 'all',
// 默认为3个,设置为能拆分为5个,nuxt自身也有个commons的cacheGroups
maxInitialRequests: 5,
cacheGroups: {
elementUi: { // element-ui
chunks: 'all',
test: /element-ui/,
priority: 100,
name: true
},
moment: {
test: /moment/,
name: true,
priority: 90,
chunks: 'all'
},
he_nuxt: {
test: /(\.nuxt|he)/,
name: true,
priority: 90,
chunks: 'all'
}
}
}
}
},
- vue代码检查问题,RaveList之前一直没有对vue文件通过Eslint检查vue的语法问题,加入
eslint-plugin-vue
之后,规范了自己写法。 - 本想着
build.extractCSS
将页面css打包成一个文件加载,不要散布在网页源代码中,但发现有些页面会存在闪烁问题,就没开启。