@cerner/duplicate-package-checker-webpack-plugin

中文文档
2.6.0发布于 2023/09/28Apache-2.0CommonJS近 30 天下载 13.3万

当一个构建中存在多个版本的同一软件包时,警告您的 Webpack 插件.

中文使用文档
文档目录12 节
  1. 为什么?
  2. 安装
  3. 配置
  4. 严格模式
  5. 节点版本支持
  6. 解析捆绑中的重复包
  7. 网络软件包 resolve.alias
  8. 雅伦 install --flat
  9. 亚伦决议
  10. 国家预防机制 Dedupe
  11. 弹出你的依赖关系
  12. 文件问题!

*

NPM version Downloads Build Status Dependencies status devDependencies status

Webpack 插件, 当您的捆绑包含多个版本的同一软件包时警告 .

duplicate-package-checker-webpack-plugin

此软件包是经过修改的叉 达伦斯塞里是因为 重复包装-检查器-网络包装-插件。 。 。 .

为什么?

由于软件包版本不同,一个单一的软件包可能会被多次纳入Webpack捆绑. 这种情况可能会在没有任何警告的情况下发生,导致你的捆绑中出现多出血并可能导致难以找到的虫子.

此插件将提醒您注意此大小, 以最小化捆绑大小并避免意外重复包造成的错误 .

动机 : https://github.com/webpack/webpack/issues/385 互联网档案馆的存檔,存档日期2014-12-05 财务报告和审定财务报表 页:1。 。 。 .

安装

npm install @cerner/duplicate-package-checker-webpack-plugin --save-dev

配置

将插件添加到您的网络包配置 :

var DuplicatePackageCheckerPlugin = require("@cerner/duplicate-package-checker-webpack-plugin");

module.exports = {
  plugins: [new DuplicatePackageCheckerPlugin()]
};

您也可以通过一个带有可配置选项的对象:

new DuplicatePackageCheckerPlugin({
  // Also show module that is requiring each duplicate package (default: false)
  verbose: true,
  // Emit errors instead of warnings (default: false)
  emitError: true,
  // Show help message if duplicate packages are found (default: true)
  showHelp: false,
  // Warn also if major versions differ (default: true)
  strict: false,
  /**
   * Exclude instances of packages from the results.
   * If all instances of a package are excluded, or all instances except one,
   * then the package is no longer considered duplicated and won't be emitted as a warning/error.
   * @param {Object} instance
   * @param {string} instance.name The name of the package
   * @param {string} instance.version The version of the package
   * @param {string} instance.path Absolute path to the package
   * @param {?string} instance.issuer Absolute path to the module that requested the package
   * @returns {boolean} true to exclude the instance, false otherwise
   */
  exclude: instance => instance.name === "fbjs",
  // Emit errors (regardless of emitError value) when the specified packages are duplicated (default: [])
  alwaysEmitErrorsFor: ['react', 'react-router'],
});

严格模式

严格模式警告多个不同软件包 主要 版本(例如: v1.0.0 对 v2.0.0)存在于捆绑中.

具有不同主要版本的软件包引入了后向不相容的更改,或者需要干预第三方软件包,或者需要不安全的工作变通(例如用单一版本解决不同软件包主要版本的依赖性).

建议保持严格的模式,因为这可以提高你的可见度,并有助于解决和确定潜在的问题.

节点版本支持

这个软件包是使用节点10到节点14开发并测试的. 使用"节点16"或"节点16"以上的消费者建议自己冒险使用"节点",因为这些版本由于缺乏彻底测试而没有得到官方支持.

解析捆绑中的重复包

你可以用多种方法来解决捆绑中的重复包, 正确的解决方案主要取决于你正在使用的工具以及每个特定的情况.

网络软件包 resolve.alias

添加条目 resolve.alias 它将配置Webpack,将任何软件包引用到一个指定的路径.

例如,如果 Lodash 在您的捆绑中被复制, 那么下面的配置将使得所有 Lodash 的导入都总是引用 Lodash 实例 ./node_modules/lodash。 。 。 .

alias: {
  lodash: path.resolve(__dirname, 'node_modules/lodash'),
}

注意:不同主要版本的异地包可能会打破你的应用. 只有当您确定所有需要的版本都兼容时才能使用, 至少是在您的应用程序上下文中

雅伦 install --flat

Yarn 允许 固定设施 (单位:千美元)yarn install --flat),只允许安装每个软件包的一个版本.

亚伦决议

如果你想对你的依赖性版本进行更多的控制 不想使用 yarn install --flat线条支持 "选择性版本分辨率" 它允许您强制执行每个依赖的特定版本.

软件包.json

{
  "dependencies": {
    "lodash": "4.17.0",
    "old-package-with-old-lodash": "*"
  },
  "resolutions": {
    "old-package-with-old-lodash/lodash": "4.17.0"
  }
}

国家预防机制 Dedupe

如果你使用国家防范机制而不是Yarn, 你可以尝试运行 npm dedupe. 国家预防机制 可能 即使一个版本满足了每个版本,仍保留同一软件包的多个版本 铸造 包括所有家属.

弹出你的依赖关系

如果您的项目正在使用一个旧版本的软件包,而一个依赖正在使用该软件包的更新版本,请考虑更新您的项目,以使用更新版本.

文件问题!

如果您的项目有依赖性并且正在使用过时版本的软件包,则提交一个问题,并通知作者更新依赖性. 让我们帮助我们的项目绿色 和我们的应用安全, 表演和无臭虫!

版本与发布记录

@cerner/duplicate-package-checker-webpack-plugin 共发布 11 个版本,首次发布于 2019/06/22;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.6.0latest2023/09/283 年前
2.5.02023/09/013 年前
2.4.22023/08/313 年前
2.4.12023/08/253 年前
2.4.02023/08/253 年前
2.3.02022/02/124 年前

关于 @cerner/duplicate-package-checker-webpack-plugin 的常见问题

@cerner/duplicate-package-checker-webpack-plugin 是什么?

当一个构建中存在多个版本的同一软件包时,警告您的 Webpack 插件.

如何安装 @cerner/duplicate-package-checker-webpack-plugin?

在项目目录运行 npm install @cerner/duplicate-package-checker-webpack-plugin,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:webpack(^4.30.0 || ^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cerner/duplicate-package-checker-webpack-plugin 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cerner__duplicate-package-checker-webpack-plugin 是否存在。

@cerner/duplicate-package-checker-webpack-plugin 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@cerner/duplicate-package-checker-webpack-plugin 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js 10 || 12 || 14。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cerner/duplicate-package-checker-webpack-plugin 可以商用吗?

@cerner/duplicate-package-checker-webpack-plugin 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cerner/duplicate-package-checker-webpack-plugin 的下载量有多少?

根据 npm 官方下载统计,@cerner/duplicate-package-checker-webpack-plugin 在 2026/10/10 – 2026/11/08 这 30 天内被下载 133,145 次,日均约 4,438 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cerner/duplicate-package-checker-webpack-plugin 还在维护吗?

最新版本 2.6.0 发布于 2023/09/28(3 年前);至今共发布 11 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/06/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。