为什么 webpack 会捆绑额外的文件?

Why is webpack bundling extra files?

我创建了一个简单的 github repo 来重现我的场景。

我有 2 个配置文件:dev.vue.config.js 和 prod.vue.config.js,它们的使用取决于 NODE_ENV 值

对于产品,我的 webpack 入口点设置为

configureWebpack: {
    entry: {
      activitySubmit: './src/as-setup.js'
    }
  }

我还使用 SplitChunks 插件将 node_modules 捆绑到 vendors.js 中,所以我希望 webpack 生成 2 个文件:activitySubmit.jsvendors.js

但是我也得到了第 3 个文件 app.js 其内容为 src/main.js 但是为什么 ?我没有将它指定为我的入口点,也没有其他文件从 main.js 导入任何内容,那么为什么它仍然被捆绑?我在产品中不需要它。

现在,如果我将入口点更改为

configureWebpack: {
    entry: {
      app: './src/as-setup.js'
    }
  }

我得到 2 个文件:app.jsvendors.js

如果我检查 app.js 我可以看到它现在不包含来自 src/main.js[=38 的代码=](如预期)。 我很困惑,请帮忙解释一下逻辑

这个问题在 Vue 论坛上得到了回答,所以我也在这里发布答案

运行

vue inspect --mode production

将显示 Vue CLI 生成的 Webpack 配置。它结束于:

entry: {
  app: [
    './src/main.js'
  ],
  activitySubmit: './src/as-setup.js'
}

因为如 vue docs 中所述,您在 configureWebpack 中提供的配置已使用 webpack-merge 合并,因此默认条目仍然存在。