npm-pkg

管理您的 package.json

选择 CLI 版本

概要

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> ...]
npm pkg fix

描述

一个自动化管理 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

    对于复杂字段,您也可以在方括号中命名一个属性来专门选择子字段。这对 exports 对象尤其有用

    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='[email protected]'

    您也可以使用特殊的空括号符号将项目追加到数组的末尾

    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
  • npm pkg fix

    自动更正 package.json 中的常见错误。 npm 已经在 publish 期间执行了此操作,这会导致 package.json 文件的内容与 npm 在安装期间使用的清单之间存在细微(大多数情况下无害)的差异。

工作区支持

您可以通过使用 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

  • 默认:false
  • 类型:Boolean

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

  • 允许在全局安装中覆盖非 npm 文件。
  • 允许 npm version 命令在不干净的 git 存储库上工作。
  • 允许使用 npm cache clean 删除缓存文件夹。
  • 允许安装具有 engines 声明的包,该声明需要不同版本的 npm。
  • 即使启用了 --engine-strict,也允许安装 engines 声明需要不同版本 node 的包。
  • 允许 npm audit fix 安装超出你声明的依赖范围的模块(包括 SemVer 主要版本变更)。
  • 允许取消发布已发布包的所有版本。
  • 允许在根项目中安装冲突的 peerDependencies。
  • npm init 期间隐式设置 --yes
  • 允许覆盖 npm pkg 中的现有值。
  • 允许取消发布整个包(不仅仅是单个版本)。

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

json

  • 默认:false
  • 类型:Boolean

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

  • npm pkg set 中,它允许在将设置值保存到你的 package.json 之前使用 JSON.parse() 解析它们。

并非所有 npm 命令都支持。

workspace

  • 默认值
  • 类型:字符串(可以设置多次)

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

workspace 配置的有效值是

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

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

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

workspaces

  • 默认值:null
  • 类型:null 或布尔值

设置为 true 以在 **所有** 配置的工作空间的上下文中运行命令。

显式地将其设置为 false 将导致像 install 这样的命令完全忽略工作空间。当未显式设置时

  • node_modules 树进行操作的命令(install、update 等)将链接工作空间到 node_modules 文件夹中。 - 执行其他操作的命令(test、exec、publish 等)将在根项目上运行,除非 workspace 配置中指定了一个或多个工作空间。

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

另请参阅