# 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
# 工作空间的支持
您可以通过使用 workspace
或 workspaces
配置选项来 设置/获取/删除 您配置的工作空间中的项目。
例如,跨项目的所有配置工作区设置 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
配置中指定了一个或多个工作空间。
此值不会导出到子进程的环境中。
← npm ping npm prefix →