阅读(3806) (11)

npm 版本 version

2021-09-06 16:09:29 更新

升级包版本

概要

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]


'npm [-v | --version]' to print npm version
'npm view <pkg> version' to view a package's published version
'npm ls' to inspect current package/dependency versions

描述

在包目录中运行此命令进行升级版本,并将新数据写回 package.jsonpackage-lock.jsonnpn-shrinkwrap.json(如果存在)。

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

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

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

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

如果设置了 sign-git-tag 配置,那么将使用-sgit 标签对标记进行签名。请注意,你必须在 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:

如果package.json的 scrpits 属性中包含preversionversionpostversionscripts,则它们将作为运行 npm version 的一部分执行。

具体的执行顺序如下:

  1. 开始之前,请检查以确保 git 工作目录是干净的。脚本可能会在以后的步骤中将文件添加到提交中。如果设置了--force标志,则跳过此步骤。
  2. 运行 preversion 脚本。这些脚本可以访问 package.json 中的旧脚本。典型的用法是在部署之前运行完整的测试套件。要添加到提交中的任何文件都应使用git add 显示添加。
  3. 根据请求在package.json中添加 Bump 版本(patchminormajor等)。
  4. 运行版本脚本。这些脚本可以访问 package.json 中的新版本(例如,它们可以将其合并到生成文件的文件头中)。同样,脚本应该使用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目录。

配置

allow-same-version 允许相同版本

  • 默认值:false
  • 类型:Boolean

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

commit-hooks 提交钩子

  • 默认值:true
  • 类型:Boolean

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

git-tag-version git标记版本

  • 默认值:true
  • 类型:Boolean

使用 npm version 命令时标记提交。

json

  • 默认值:true
  • 类型:Boolean

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

  • npm pkg set 允许将设置值保存到 package.json

并非所有 npm 命令都支持。

preid

  • 默认:""
  • 类型:String

用作 semver 的pewewlease部分的前缀的prerelease identifier,就像 rc1.2.0-rc.8

sign-git-tag 签到git标记

  • 默认值:false
  • 类型:Boolean

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

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

workspace 工作区

  • 默认值:
  • 类型:String(可多次设置)

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

workspace配置的有效值为:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择所有嵌套工作区)

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

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

workspaces 工作区

  • 默认值:false
  • 类型:Boolean

启用在所有已配置工作区的上下文中运行命令。

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