问题

在研究 vue-router 路由按需加载的时候,学到了 r => require.ensure([], () => r(require('@/components/Home/Home')), 'com-home') 的第三个参数 'com-home' 是为了 重命名 所有的依赖打包进的那个js文件。
但是这个写法在vue-cli2项目中,打包出来的文件依旧是以一个 hash 值,而不是我的自定义命名做文件名;同样的写法放在vue-cli 4.x的项目中,却切实生效了。

怎么改

build/webpack.prod.conf.js

  1. chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
  2. // 改成
  3. chunkFilename: utils.assetsPath('js/[name].[chunkhash].js')

是的,输出文件名从 id 改为 name 就好了……

在 cli4 为什么可以

cli4 的默认配置为 chunkFilename: 'static/js/[name].js'
自从 cli3 以来,vue-cli 封装了大部分 webpack 的配置,并且不再像 2.x 一样暴露在 build 文件中;与此同时,cli 暴露了 vue inspect 命令供查看处理后的 webpack 配置,使用 vue inspect | grep chunkFilename 即可看到。