javascript - cacheGroups 丢弃我的组并只创建前两个组

标签 javascript webpack webpack-4

我想根据下面的方案将我的包分成 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/

相关文章:

javascript - 如何自动获取 webpack4 chunkhash 值以在 html 中的脚本 src 中使用?

javascript - 单击按钮后下载 CSV 文件

javascript - 将演示数据放入 core-list

javascript - 更新到 nextjs@10.4 后找不到模块 'webpack/lib/node/NodeTemplatePlugin'

css - 如何编辑 webpack 以在 React 应用程序中使用 SCSS?

reactjs - Internet Explorer 11 上的 SCRIPT5017 错误,使用 webpack 4、babel 7 和 React

typescript - 别名与 Webpack 4 和 awesome-typescript 加载器不工作

javascript - 加载到页面后使用图像

javascript - jquery 表单选择器单选按钮和复选框

webpack - Polymer 3 + Webpack -> 没有 'new' 就无法调用 PolymerElement