npm-version

提升包版本

选择 CLI 版本

概述

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
alias: verison

配置

allow-same-version

  • 默认:false
  • 类型:布尔值

在使用 npm version 将新版本设置为与当前版本相同的版本时,防止抛出错误。

commit-hooks

  • 默认:true
  • 类型:布尔值

使用 npm version 命令时运行 git commit hooks。

git-tag-version

  • 默认:true
  • 类型:布尔值

使用 npm version 命令时标记提交。将此设置为 false 将导致根本不进行任何提交。

json

  • 默认:false
  • 类型:布尔值

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

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

并非所有 npm 命令都支持。

preid

  • 默认:""
  • 类型:字符串

用作 semver 的“预发布”部分的前缀的“预发布标识符”。就像 1.2.0-rc.8 中的 rc

sign-git-tag

  • 默认:false
  • 类型:布尔值

如果设置为 true,那么 npm version 命令将使用 -s 标记版本以添加签名。

请注意,git 要求你在你的 git 配置中设置 GPG 密钥才能使此正常工作。

workspace

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

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

workspace 配置的有效值为:

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

当为 npm init 命令设置时,这可以设置为尚未存在的工作区的文件夹,以创建文件夹并将其设置为项目中的一个全新的工作区。

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

workspaces

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

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

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

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

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

workspaces-update

  • 默认:true
  • 类型:布尔值

如果设置为 true,npm cli 将在可能更改安装到 node_modules 文件夹的工作区的操作之后运行更新。

include-workspace-root

  • 默认:false
  • 类型:布尔值

在为命令启用工作区时包含工作区根目录。

当设置为 false 时,通过 workspace 配置指定单个工作区,或通过 workspaces 标志指定所有工作区,将导致 npm 仅在指定的工作区上运行,而不是在根项目上运行。

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

描述

在包目录中运行此命令以提升版本并将新数据写回 package.jsonpackage-lock.json 以及(如果存在)npm-shrinkwrap.json

newversion 参数应该是有效的 semver 字符串, semver.inc 的有效第二个参数(其中之一是 patchminormajorprepatchpreminorpremajorprerelease)或 from-git。在第二种情况下,现有版本将在指定的字段中增加 1。 from-git 将尝试读取最新的 git 标记,并将其用作新的 npm 版本。

如果在 git 仓库中运行,它还将创建一个版本提交和标记。此行为由 git-tag-version(见下文)控制,可以通过运行 npm --no-git-tag-version version 在命令行上禁用。如果工作目录不干净,它将失败,除非设置了 -f--force 标志。

如果使用 -m--message 配置 选项,npm 将在创建版本提交时将其用作提交消息。如果 message 配置包含 %s,那么它将被替换为生成的版本号。例如

npm version patch -m "Upgrade to %s for reasons"

如果 sign-git-tag 配置 已设置,则使用 -s 标志对标签进行签名。请注意,您必须在 git 配置中设置一个默认的 GPG 密钥,才能使此操作正常工作。例如

$ npm config set sign-git-tag true
$ npm version patch
You need a passphrase to unlock the secret key for
user: "isaacs (http://blog.izs.me/) <[email protected]>"
2048-bit RSA key, ID 6C481CF6, created 2010-08-31
Enter passphrase:

如果 preversionversionpostversion 位于 package.json 的 scripts 属性中,则它们将在运行 npm version 时执行。

执行的确切顺序如下

  1. 在开始之前,请确保 git 工作目录是干净的。您的脚本可能会在将来的步骤中向提交添加文件。如果设置了 --force 标志,则会跳过此步骤。
  2. 运行 preversion 脚本。这些脚本可以访问 package.json 中的旧 version。典型的用例是在部署之前运行完整的测试套件。您希望添加到提交的任何文件都应使用 git add 显式添加。
  3. 根据要求在 package.json 中提升 version (patchminormajor 等)。
  4. 运行 version 脚本。这些脚本可以访问 package.json 中的新 version(因此它们可以将其合并到生成文件的文件头中,例如)。同样,脚本应使用 git add 显式将生成的文件添加到提交中。
  5. 提交并标记。
  6. 运行 postversion 脚本。使用它清理文件系统或自动推送提交和/或标签。

以下是一个示例

{
"scripts": {
"preversion": "npm test",
"version": "npm run build && git add -A dist",
"postversion": "git push && git push --tags && rm -rf build/temp"
}
}

这将运行所有测试,并且只有在测试通过后才会继续。然后运行您的 build 脚本,并将 dist 目录中的所有内容添加到提交中。提交后,它会将新提交和标签推送到服务器,并删除 build/temp 目录。

参见