@dead50f7/generate-package-json-webpack-plugin

中文文档
2.6.1发布于 2022/08/03MITTypeScriptCommonJS零依赖近 30 天下载 8183

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

中文使用文档
文档目录9 节
  1. 为什么产生新的 package.json ? 吗?
  2. : floppy 磁盘:安装
  3. : 电源 插件: 用法
  4. 重要说明 externals
  5. 在代码外添加模块( 构建模块等)
  6. 简单 API
  7. 第一个论点: basePackage
  8. 第二个论点: options
  9. :mag:需要注意的事情

生成- 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- 任何一个 其内部列出的依赖性将被有意设定,并由生成过程作出不同的解释. 见 详情见下文。 。 。 .

重要说明 externals

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

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

因此,这个插件最好与某种东西结合使用 喜欢 网络包-节点-外部,用于确定节点 模块不包含在您的最终 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 共发布 1 个版本,首次发布于 2022/08/03;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.6.1latest2022/08/034 年前

关于 @dead50f7/generate-package-json-webpack-plugin 的常见问题

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