问题
在研究 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
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
// 改成
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
即可看到。