目录
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.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 仓库中运行,它还将创建一个版本提交和标记。此行为由 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 patchYou need a passphrase to unlock the secret key foruser: "isaacs (http://blog.izs.me/) <[email protected]>"2048-bit RSA key, ID 6C481CF6, created 2010-08-31Enter passphrase:
如果 preversion
、version
或 postversion
位于 package.json 的 scripts
属性中,则它们将在运行 npm version
时执行。
执行的确切顺序如下
- 在开始之前,请确保 git 工作目录是干净的。您的脚本可能会在将来的步骤中向提交添加文件。如果设置了
--force
标志,则会跳过此步骤。 - 运行
preversion
脚本。这些脚本可以访问 package.json 中的旧version
。典型的用例是在部署之前运行完整的测试套件。您希望添加到提交的任何文件都应使用git add
显式添加。 - 根据要求在
package.json
中提升version
(patch
、minor
、major
等)。 - 运行
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
目录。