# npm pkg

管理你的 package.json

# 概要

npm pkg set <key>=<value> [<key>=<value> ...]
npm pkg get [<key> [<key> ...]]
npm pkg delete <key> [<key> ...]
npm pkg set [<array>[<index>].<key>=<value> ...]
npm pkg set [<array>[].<key>=<value> ...]

# 描述

自动管理 package.json 文件的命令。npm pkg 提供了 3 个不同的子命令,允许您修改或检索 package.json 中给定对象键的值。

用于检索和设置字段的语法是可以在 package.json 中找到的嵌套对象属性的点分隔表示,它与 npm view 中用于从注册表中检索信息的符号相同,下面您可以找到关于如何使用它的更多示例。

返回值总是 json 格式。

  • npm pkg get <field>

检索在 package.json 文件中定义的值 key

例如,为了获取当前包的名称,你可以运行:

npm pkg get name

也可以一次检索多个值:

npm pkg get name version

您可以通过使用句点分隔子字段来查看它们。要检索测试 script 值的值,可以运行以下命令:

npm pkg get scripts.test

对于数组字段,请求非数字字段将返回列表中对象的所有值。例如,要获取一个包的所有贡献者的电子邮件,你可以运行:

npm pkg get contributors.email

您还可以使用方括号中的数字索引来专门选择数组字段中的项。要获取列表中第一个贡献者的电子邮件地址,您可以运行:

npm pkg get contributors[0].email

对于复杂的字段,还可以用方括号命名属性,以专门选择子字段。这对导出对象特别有帮助:

npm pkg get "exports[.].require"
  • npm pkg set <field>=<value>

根据 field 的值设置 package.json 中的 value。保存到 package.json 文件时,使用的规则集 npm install 和其他涉及 package.json 文件的 cli 命令相同,确保重视现有缩进,并可能在将值保存到文件之前应用一些验证。

用于从包中检索值的语法也可以用于定义新的属性或覆盖现有的属性,下面是一些示例,说明如何使用点分隔语法编辑 package.json 文件。

在你的 package.json 中定义一个名为 mynewcommand 的新 bin 文件,指向一个文件 cli.js:

npm pkg set bin.mynewcommand=cli.js

同时设置多个字段也是可能的:

npm pkg set description='Awesome package' engines.node='>=10'

也可以添加到数组值,例如添加一个新的贡献者条目:

npm pkg set contributors[0].name='Foo' contributors[0].email='foo@bar.ca'

你也可以使用特殊的空方括号将元素添加到数组的末尾:

npm pkg set contributors[].name='Foo' contributors[].name='Bar'

也可以在将值保存到 package.json 文件之前将其解析为 json,例如为了设置 "private": true 属性:

npm pkg set private=true --json

它还支持将值保存为数字:

npm pkg set tap.timeout=60 --json
  • npm pkg delete <key>

package.json 中删除一个 key

用于从包中设置值的语法也可以用于删除现有值。例如,为了删除一个名为 build 的脚本:

npm pkg delete scripts.build

# 工作空间的支持

您可以通过使用 workspaceworkspaces 配置选项来 设置/获取/删除 您配置的工作空间中的项目。

例如,跨项目的所有配置工作区设置 funding 值:

npm pkg set funding=https://example.com --ws

当使用 npm pkg get 从你配置的工作空间中获取信息时,返回的结果将是 json 格式的,其中顶级键是每个工作空间的名称,这些键的值将从每个配置的工作空间中返回,例如:

npm pkg get name version --ws
{
  "a": {
    "name": "a",
    "version": "1.0.0"
  },
  "b": {
    "name": "b",
    "version": "1.0.0"
  }
}

# 配置

# force

  • Default: false
  • Type: Boolean

删除了针对副作用、常见错误、不必要的性能下降和恶意输入的各种保护。

  • 允许在全局安装中清除 non-npm 文件。
  • 允许 npm version 命令在不干净的 git 存储库上工作。
  • 允许删除缓存文件夹 npm cache clean
  • 允许安装 engines 声明需要不同版本的 npm 的包。
  • 允许安装 engines 声明需要不同版本的软件包 node,即使 --engine-strict 已启用。
  • 允许 npm pkg fix 安装指定依赖范围之外的模块(包括 SemVer-major 的更改)。
  • 允许取消发布已发布包的所有版本。
  • 允许在根项目中安装冲突的 peerDependencies。
  • npm init 中隐式设置 --yes
  • 允许删除 npm pkg 中的现有值。
  • 允许取消发布整个包(不仅仅是单个版本)。

如果您对自己想要做什么没有明确的想法,强烈建议您不要使用此选项!

# json

  • Default: false
  • Type: Boolean

是否输出 JSON 数据,而不是正常输出。

  • npm pkg set 支持使用 JSON.parse() 解析集合值,然后保存到你的 package.json

并非所有 npm 命令都支持。

# workspace

  • Default:
  • Type: String (可以设置多次)

启用在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。

workspace 配置的有效值如下:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择该文件夹中的所有工作区)

npm init 命令设置时,可以将其设置为尚不存在的工作空间的文件夹,以创建文件夹并将其设置为项目中的全新工作空间。

此值不会导出到子进程的环境中。

# workspaces

  • Default: null
  • Type: null or Boolean

设置为 true 将在所有配置的工作区中运行该命令。

显式地将此设置为 false 将导致如下命令 install 完全忽略工作空间。当没有显式设置时:

  • node_modules 树上操作的命令 (install, update, etc.) 时,将把工作区链接到 node_modules 文件夹中。做其他事情的命令 (test, exec, publish, etc.) 将在根项目上操作,除非在 workspace 配置中指定了一个或多个工作空间。

此值不会导出到子进程的环境中。

Last Updated: 4/25/2023, 9:49:29 AM