# @dead50f7/generate-package-json-webpack-plugin 中文文档

规范地址：https://npmcn.com/package/%40dead50f7/generate-package-json-webpack-plugin/

版本：2\.6\.1
npm 元数据更新时间：2022-08-03T11:09:47.607Z
中文译文更新时间：2026-11-11T18:23:40.502Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40dead50f7/generate-package-json-webpack-plugin
原文对照：https://npmcn.com/package/%40dead50f7/generate-package-json-webpack-plugin/?lang=original
项目主页：https://github.com/dead50f7/generate-package-json-webpack-plugin#readme
源码仓库：https://github.com/dead50f7/generate-package-json-webpack-plugin

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

- 包体积（解压后）：32.1 kB，6 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2022-08-03T11:09:47.241Z
- 最新版本发布：2022-08-03T11:09:47.438Z
- 近 30 天下载量：8183（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

生成一个 package.json 文件, 包含您 Webpack 捆绑所使用的外部模块

## 安装

```sh
npm install @dead50f7/generate-package-json-webpack-plugin
```

也可以使用：`pnpm add @dead50f7/generate-package-json-webpack-plugin`、`yarn add @dead50f7/generate-package-json-webpack-plugin`、`bun add @dead50f7/generate-package-json-webpack-plugin`

## README

# 生成- package-json-webpack-plugin 生成- package-json-webpack-plugin

> 用来限制内部的依赖性 `package.json` 只有那些被你的代码实际使用.

### 为什么产生新的 `package.json`? 吗?

此插件对于您拥有开发/ 测试大型源项目时有用 为各种部署和应用程序将项目捆绑在一起。 如谷歌云函数.

_甚至只是捆绑你的普通节点Js服务器代码 以及知道你的 `package.json` 尽可能的精致 可能是为了下次部署._

我们都知道我们的发展环境会变得有点混乱..

### : floppy 磁盘:安装

```
npm install @dead50f7/generate-package-json-webpack-plugin --save-dev
```

## : 电源 插件: 用法

```
const basePackage = {
  "name": "my-nodejs-module",
  "version": "1.0.0",
  "main": "./index.js",
  "engines": {
    "node": ">= 14"
  }
}

// inside your webpack configuration
plugins: [new GeneratePackageJsonPlugin(basePackage)],
```

就是这样 插件将生成一个新的 `package.json` 文件包含您代码使用的所有依赖性。 这个 检测到的依赖关系的版本直接取自内部模块 `node_modules`。 。 。 .

**不详.** 这个基础软件包文件是故意不孕的,作为我们最终输出的基础 `package.json`\- 任何一个 其内部列出的依赖性将被有意设定,并由生成过程作出不同的解释. [见 详情见下文](https://npmcn.com/package/%40dead50f7/generate-package-json-webpack-plugin/#readme-adding-modules-outside-of-your-code-build-modules-etc)。 。 。 .

### 重要说明 `externals`

插件只写输入代码中找到且已标记在 `externals` 在你的 Webpack 配置中.

这是合乎逻辑的,因为如果一个模块没有被标记为外部模块,它就包含在您最后的网络包包中 因此,不需要安装 以再次依赖部署.

因此,这个插件最好与某种东西结合使用 喜欢 [网络包-节点-外部](https://github.com/liady/webpack-node-externals),用于确定节点 模块不包含在您的最终 `bundle.js`,像这样:

```
const nodeExternals = require("webpack-node-externals");

// inside your webpack config
externals: [nodeExternals({
    whitelist: [/^module-I-want-bundled/],
})],
```

如您所见,您可以添加您故意添加的模块 _对_ 要使用 `whitelist` 选项.

### 在代码外添加模块( 构建模块等)

#### 或故意设置捆绑依赖的不同版本,或作为不同的依赖类型(`peerDependencies`(例如)

简单地把这些依赖性放在 `basePackageValues` 代表基数的对象 新设 `package.json` 将创建.

保留版本编号字符串为空( E)`""`)让插件解决版本。 要使用一个版本,即 不同,请在此设置版本字符串.

```
const basePackageValues = {
  "name": "my-nodejs-module",
  "version": "1.0.0",
  "main": "./index.js",
  "scripts": {
    "start": "cross-var node --max-old-space-size=$NODE_JS_MAX_OLD_SPACE_SIZE ./server.js"
  }
  "engines": {
    "node": ">= 14"
  },
  devDependencies: {
    "cross-var": "^1.1.0",
    "cross-env": "",
  },
  peerDependencies: {
    "react" : "",
  }
}
```

在这个例子中, `cross-var` 已故意设定为版本 `^1.1.0`,无论实际安装什么 它会使用这个版本. `cross-env` 但是,它的版本号将会从 `node_modules`。 。 。 .

这对增加运行时需要但未在您的网页包中找到的依赖关系非常有用 捆绑 例如 `cross-var` 将环境变量注入跨平台运行的脚本 亲切的方式.

需要注意的是,同一行为适用于所有类型的依赖关系(`dependencies`, (中文(简体) ), `devDependencies` 财务报告和审定财务报表 `peerDependencies`) (中文(简体) ). 在这个例子中 `react` 将具有与 `cross-env`,而不是被放置 内部 `dependencies` 列表中,它将被放在 `peerDependencies` 列表中选择一个选项.

## 简单 API

```
new GeneratePackageJsonPlugin(basePackage, options)
```

### 第一个论点: `basePackage`

(单位:千美元) **需求** )您应该为您的 `package.json` 这里的文件。 例如:

```
const basePackage = {
  "name": "my-nodejs-module",
  "version": "1.0.0",
  "main": "./bundle.js",
  "engines": {
    "node": ">= 14"
  }
}
```

这将与生成的合并 `"dependencies": { ... }` 构成最终 `package.json` 分发文件.

### 第二个论点: `options`

(单位:千美元) _可选_ (中文(简体) )

具有下列结构的天体:

```
  {
     debug: true,
     useInstalledVersions: true,
     resolveContextPaths: [__dirname],
     sourcePackageFilenames: [
       join(__dirname, "../other-workspace/package.json"),
     ],
     forceWebpackVersion: "webpack5",
     excludeDependencies: ["aws-sdk"],
  }
```

**备选方案:**

`debug` (默认 : _虚假_: 启用以显示一些关于插件如何查找依赖性和 创建新 `package.json`。 。 。 .

`useInstalledVersions` (默认 : _真实_: 解析节点模块,并使用安装在您的 环境。 这对锁定生产部署的版本很有用. 这是默认和最简单的使用方式 插件, 如果无法启用, 您应该提供 package.json 文件 in `sourcePackageFilenames` 从 该插件将源模块版本.

`resolveContextPaths`: 向上仰望的内部解析行为的背景路径 `node_modules` 要拉动 这些版本来自。 当前目录是默认的, 但是如果您有单列, 则会有边框定义 多种情况可能是有用的.

`sourcePackageFilenames` : 如果默认 `useInstalledVersions` 选项已设置,此选项仅用作最终 寻找版本的后退 。 这对单重置和代码中不依赖的工程有用 仅从单个背景项目定义。 如果您在多个工程或“ 工作空间” 之间共享代码以捆绑 您可能想要设置此选项.

`forceWebpackVersion` (可选 - 默认情况下, 插件将尝试检测版本) : 这可定为: `webpack4` 或者说 `webpack5`。如果您使用的 Webpack 版本低于 4 - 那么设定为 `webpack4`。这可能有助于 使用Webpack的民众.

`excludeDependencies` : 您可以在此设置您绝对不希望输出的任何依赖性 `package.json` 文档, 即使它们碰巧被你的代码使用。 这在某些边缘情况下是有用的,例如执行环境 自动为您提供这些依赖关系,无需安装.

### :mag:需要注意的事情

你应该记得设置 `"main": "./index.js"` 转到正确的文件名( 可能是输出捆绑文件) 从同一 Webpack 任务开始),并 / 或正确设置您将运行在 Node.js 服务器部署上的起始脚本 以 `npm start`您可以在 `basePackage` 对象通过插件,例如 :

```
const basePackage = {
  "name": "my-nodejs-module",
  "version": "1.0.0",
  "main": "./bundle.js",
  "scripts": {
    "start": "node ./bundle.js"
  },
  "engines": {
    "node": ">= 14"
  }
}
```

## 常见问题

### @dead50f7/generate-package-json-webpack-plugin 是什么？

生成一个 package\.json 文件, 包含您 Webpack 捆绑所使用的外部模块

### 如何安装 @dead50f7/generate-package-json-webpack-plugin？

在项目目录运行 npm install @dead50f7/generate-package-json-webpack-plugin，或使用 pnpm add / yarn add / bun add。

### @dead50f7/generate-package-json-webpack-plugin 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @dead50f7/generate-package-json-webpack-plugin 支持 ESM 还是 CommonJS？

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

### @dead50f7/generate-package-json-webpack-plugin 可以商用吗？

@dead50f7/generate-package-json-webpack-plugin 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dead50f7/generate-package-json-webpack-plugin 的下载量有多少？

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

### @dead50f7/generate-package-json-webpack-plugin 还在维护吗？

最新版本 2\.6\.1 发布于 2022/08/03（4 年前）；至今共发布 1 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/08/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

