RaveList升级Nuxt.js到2.0+遇到的问题

Nuxt.js升级到2.0+版本后,遇到的问题还真不少,就整理一下。

  1. 在Nuxt.js 2.0+版本中,vendor已经在Webpack 4移除,不再使用CommonsChunkPlugin,所以打包些公用模块就得另外处理了,而之前的babel-polyfill就是放在vendor中的,移除后就改成script引入本地文件。
  2. 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'
          }
        }
      }
    }
  },
  1. vue代码检查问题,RaveList之前一直没有对vue文件通过Eslint检查vue的语法问题,加入eslint-plugin-vue之后,规范了自己写法。
  2. 本想着build.extractCSS将页面css打包成一个文件加载,不要散布在网页源代码中,但发现有些页面会存在闪烁问题,就没开启。

标签: vue, nuxt

添加新评论