# @cerner/duplicate-package-checker-webpack-plugin 中文文档

规范地址：https://npmcn.com/package/%40cerner/duplicate-package-checker-webpack-plugin/

版本：2\.6\.0
npm 元数据更新时间：2024-11-26T13:15:14.325Z
中文译文更新时间：2026-11-09T08:09:30.054Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cerner/duplicate-package-checker-webpack-plugin
原文对照：https://npmcn.com/package/%40cerner/duplicate-package-checker-webpack-plugin/?lang=original
项目主页：https://github.com/cerner/terra-toolkit
源码仓库：https://github.com/cerner/terra-toolkit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：101 kB，8 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：10 \|\| 12 \|\| 14
- 运行依赖：4 个
- peer 依赖：webpack ^4\.30\.0 \|\| ^5\.0\.0
- 首次发布：2019-06-21T18:21:23.976Z
- 最新版本发布：2023-09-27T17:40:32.854Z
- 近 30 天下载量：133145（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @cerner/duplicate-package-checker-webpack-plugin
```

也可以使用：`pnpm add @cerner/duplicate-package-checker-webpack-plugin`、`yarn add @cerner/duplicate-package-checker-webpack-plugin`、`bun add @cerner/duplicate-package-checker-webpack-plugin`

## README

# \*

[![NPM version](https://img.shields.io/npm/v/@cerner/duplicate-package-checker-webpack-plugin.svg)](https://www.npmjs.com/package/@cerner/duplicate-package-checker-webpack-plugin) [![Downloads](https://img.shields.io/npm/dt/@cerner/duplicate-package-checker-webpack-plugin.svg)](https://www.npmjs.com/package/@cerner/duplicate-package-checker-webpack-plugin) [![Build Status](https://badgen.net/travis/cerner/terra-toolkit)](https://travis-ci.com/cerner/terra-toolkit) [![Dependencies status](https://badgen.net/david/dep/cerner/duplicate-package-checker-webpack-plugin)](https://david-dm.org/cerner/duplicate-package-checker-webpack-plugin) [![devDependencies status](https://badgen.net/david/dev/cerner/duplicate-package-checker-webpack-plugin)](https://david-dm.org/cerner/duplicate-package-checker-webpack-plugin?type=dev)

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

![duplicate-package-checker-webpack-plugin](https://raw.githubusercontent.com/cerner/duplicate-package-checker-webpack-plugin/main/screenshot.png)

此软件包是经过修改的叉 [达伦斯塞里](https://github.com/darrenscerri)是因为 [重复包装-检查器-网络包装-插件](https://github.com/darrenscerri/duplicate-package-checker-webpack-plugin)。 。 。 .

## 为什么?

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

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

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

## 安装

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

## 配置

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

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

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

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

```js
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`](https://webpack.github.io/docs/configuration.html#resolve-alias) 它将配置Webpack,将任何软件包引用到一个指定的路径.

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

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

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

### 雅伦 `install --flat`

Yarn 允许 [固定设施](https://yarnpkg.com/lang/en/docs/cli/install/#toc-yarn-install-flat) (单位:千美元)`yarn install --flat`),只允许安装每个软件包的一个版本.

### 亚伦决议

如果你想对你的依赖性版本进行更多的控制 不想使用 `yarn install --flat`线条支持 ["选择性版本分辨率"](https://yarnpkg.com/lang/en/docs/selective-version-resolutions) 它允许您强制执行每个依赖的特定版本.

**软件包.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`. 国家预防机制 **可能** 即使一个版本满足了每个版本,仍保留同一软件包的多个版本 [铸造](https://docs.npmjs.com/getting-started/semantic-versioning) 包括所有家属.

### 弹出你的依赖关系

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

### 文件问题!

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

## 常见问题

### @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 和提交记录判断。

