vue.config.js里面,像下面這樣寫(xiě)的,會(huì)把js文件編譯成一個(gè)個(gè)的chunk的js
// 不是dev的就不用編譯出runtime
config
.when(process.env.NODE_ENV !== 'dev',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
// 下面就是把node_modules編譯出lib
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // node_modules下面的第三方的庫(kù)(除了elementUI的,elementUI的chunk在下面)
},
elementUI: {
name: 'chunk-elementUI', // 把elementUI拆分到一個(gè)單獨(dú)的文件里面
priority: 20, // 這個(gè)的優(yōu)先級(jí)高于lib
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
})
config.optimization.runtimeChunk('single')
}

image.png
默認(rèn)名稱(chēng)是不帶hash值的(只有production的時(shí)候會(huì)),如果希望帶hash值,把對(duì)于的env文件里面加上
NODE_ENV = production

image.png