在包目录中运行此命令以提升版本并将新数据写回 package.json、package-lock.json 和 npm-shrinkwrap.json(如果存在)。
newversion 参数应该是有效的 semver 字符串、semver.inc 的有效第二个参数(patch、minor、major、prepatch、preminor、premajor、prerelease 之一)或 from-git。在第二种情况下,现有版本将在指定字段中增加 1。from-git 将尝试读取最新的 git 标签,并将其用作新的 npm 版本。
如果在 git repo 中运行,它还将创建一个版本提交和标签。此行为由 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 进行签名。请注意,您必须在 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/) <i@izs.me>"
2048-bit RSA key, ID 6C481CF6, created 2010-08-31
Enter passphrase:
如果 preversion、version 或 postversion 在 package.json 的 scripts 属性中,它们将作为运行 npm version 的一部分执行。
具体执行顺序如下:
--force 标志,则跳过此步骤。preversion 脚本。这些脚本可以访问 package.json 中的旧 version。一个典型的用途是在部署之前运行您的完整测试套件。您要添加到提交中的任何文件都应使用 git add 显式添加。patch、minor、major 等)在 package.json 中撞击 version。version 脚本。这些脚本可以访问 package.json 中的新 version(例如,它们可以将其合并到生成文件的文件头中)。同样,脚本应该使用 git add 显式地将生成的文件添加到提交中。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 目录。