0

我有一个应用程序,我可以在其中添加模块作为 node_modules。现在,这些模块和应用程序使用库 XYZ 作为节点模块。此外,这些模块还有其他节点模块,它们有自己的库 XYZ 作为节点模块。

所以,这大致是我的应用程序结构的样子 在此处输入图像描述

我使用 gulp 和 webpack,我正在尝试如何对库 XYZ进行重复数据删除。我想构建一个任务,该任务将遍历节点模块的嵌套树并构建出 XYZ 库的 1 个通用版本。我怎样才能做到这一点?

我尝试使用 deDupePlugin,这是我添加到我的 gulp 默认任务中的所有内容,但它没有工作。我错过了什么吗?

plugins: [
            new webpack.optimize.DedupePlugin()
           // new CommonsChunkPlugin("commons", "commons.js")
        ],

或者,还有其他方法可以实现吗?任何帮助将不胜感激

4

1 回答 1

7

DedupePlugin只会删除完全相等的文件。您的模块可能依赖于不同版本的库,这就是为什么它可能并不总是被重复数据删除的原因。即使对文件进行了重复数据删除,模块本身也不会,因此无法满足您对单个实例的要求。

您可以使用resolve.alias将所有require('libraryXYZ')调用重定向到同一个顶级实例。

resolve: {
  alias: {
    libraryXYZ: require('path').resolve('./node_modules/libraryXYZ'),
  },
},

这是我制作的一个比较存储库,展示了对模块进行重复数据删除的不同方法。

于 2015-10-28T21:39:12.453 回答