我想根据下面的方案将我的包分成 block 。但是,仅考虑前 2 个 block 组,并将我的 editor
组插入到我的应用程序主 js (app
),而不是单独的 block 。
预期结果:
"/packs/js/runtime~app.js",
"/packs/js/vendors.chunk.js",
"/packs/js/app-commons.chunk.js",
"/packs/js/editors.chunk.js", // Editors are in this.
"/packs/js/app.chunk.js"
实际结果:
"/packs/js/runtime~app.js",
"/packs/js/vendors.chunk.js",
"/packs/js/app-commons.chunk.js",
"/packs/js/app.chunk.js" // instead, editors inserted to this...
似乎在app-commons
之后,它只是丢弃其余部分。 但是,如果我删除app_commons
,那么编辑器
就会被创建为一个 block 。看来第二组之后它就不遵守我的规则了。
代码:
splitChunks(config =>
Object.assign({}, config, {
optimization: {
splitChunks: {
cacheGroups: {
commons: {
test(mod /* , chunk */) {
if (!mod.context.includes('node_modules')) {
return false
}
if (
['editor', 'draft-js', 'highlight'].some(str =>
mod.context.includes(str),
)
) {
return false
}
return true
},
name: 'vendors',
chunks: 'all',
reuseExistingChunk: true,
},
app_commons: {
test(mod /* , chunk */) {
if (!mod.context.includes('node_modules')) {
return false
}
if (['draft-js', 'highlight'].some(str => mod.context.includes(str))) {
return true
}
return false
},
name: 'app-commons',
chunks: 'all',
reuseExistingChunk: true,
},
editor: {
test(mod /* , chunk */) {
if (!mod.context.includes('node_modules')) {
return false
}
if (['editor'].some(str => mod.context.includes(str))) {
return true
}
return false
},
name: 'editors',
chunks: 'all',
reuseExistingChunk: true,
},
},
},
},
}),
)
最佳答案
请将 enforce: true
添加到您的编辑器配置中。
关于javascript - cacheGroups 丢弃我的组并只创建前两个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089098/