目录
npm-pkg
选择 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[].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 在安装期间使用的清单之间存在细微(大多数情况下无害)的差异。
工作区支持
您可以通过使用 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
- 默认: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
配置中指定了一个或多个工作空间。
此值不会导出到子进程的环境中。