# npm version

查看版本

# 概要

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

alias: verison

# 描述

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

newversion 参数应该是一个有效 semver 字符串,server.inc 的有效第二参数( patchminormajorprepatchpreminorpremajorprerelease 中的其中一个),或 from-git。在第二种情况下,现有版本将在指定字段中增加 1。 从 git 将尝试读取最新的 from-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:

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

具体的执行顺序如下:

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

以下面的例子为例:

{
  "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

  • Default: false
  • Type: Boolean

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

# commit-hooks

  • Default: true
  • Type: Boolean

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

# git-tag-version

  • Default: true
  • Type: Boolean

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

# json

  • Default: false
  • Type: Boolean

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

  • npm pkg set 支持使用 JSON.parse() 解析集合值,然后保存到你的 package.json

并非所有 npm 命令都支持。

# preid

  • Default: ""
  • Type: String

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

# sign-git-tag

  • Default: false
  • Type: Boolean

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

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

# workspace

  • Default:
  • Type: String (可以设置多次)

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

workspace 配置的有效值如下:

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

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

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

# workspaces

  • Default: null
  • Type: null or Boolean

设置为 true 将在所有配置的工作区中运行该命令。

显式地将此设置为 false 将导致如下命令 install 完全忽略工作空间。当没有显式设置时:

  • node_modules 树上操作的命令 (install, update, etc.) 时,将把工作区链接到 node_modules 文件夹中。做其他事情的命令 (test, exec, publish, etc.) 将在根项目上操作,除非在 workspace 配置中指定了一个或多个工作空间。

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

# workspaces-update

  • Default: true
  • Type: Boolean

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

# include-workspace-root

  • Default: false
  • Type: Boolean

当为某个命令启用工作区时,请包含工作区根目录。

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

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

Last Updated: 4/25/2023, 9:49:29 AM