# npm dist-tag

修改包分发标签

# 概要

npm dist-tag add <package-spec (with version)> [<tag>]
npm dist-tag rm <package-spec> <tag>
npm dist-tag ls [<package-spec>]

alias: dist-tags

# 描述

在包上添加、删除和枚举分发标签:

  • add: 使用指定的标记标记包的指定版本,如果没有指定,则标记 --tag 配置。如果在 auth-and-write 上使用双因素身份验证,那么需要在 --otp <one-time password> 命令行或 OTP 提示符处包含一次性密码。

  • rm: 从包中清除不再使用的标记。如果在 auth-and-write 上使用双因素身份验证,那么需要在 --otp <one-time password> 命令行或 OTP 提示符处包含一次性密码。

  • ls: 显示包的所有 dist-tags,默认为当前前缀中的包。如果不指定,这是默认操作。

当安装包时,可以使用标签作为版本的引用,而不是使用特定的版本号:

npm install <name>@<tag>

当安装依赖项时,可以指定一个首选的标记版本:

npm install --tag <tag>

(这也适用于任何其他解析和安装依赖关系的命令,比如 npm dedupenpm update, 和 npm audit fix。)

发布包会将 latest 标记设置为发布版本,除非使用了 --tag 选项。例如, npm publish --tag=beta

默认情况下,npm install <pkg>(没有任何 @<version>@<tag> 说明符)安装 latest 标签。

# 目的

标签可以用来提供别名,而不是版本号。

一个项目可能选择有多个开发流,并为每个流使用不同的标签,例如,stable, beta, dev, canary

默认情况下,latest 标签被 npm 用来标识一个包的当前版本,并且 npm install <pkg>(没有任何 @<version>@<tag> 说明符)安装 latest 标签。通常,项目只使用 latest 标签来表示稳定的发布版本,而使用其他标签表示不稳定的版本,例如 prereleases。

next 标记被一些项目用来标识即将发布的版本。

除了 latest,没有任何标签对 npm 本身有任何特殊的意义。

# 注意事项

该命令以前称为 npm tag ,它只创建新的标签,因此有不同的语法。

标签必须与版本号共享一个命名空间,因为它们是在同一个插槽中指定的:npm install <pkg>@<version> vs npm install <pkg>@<tag>

可以解释为有效 semver 范围的标签将被拒绝。例如,v1.4 不能用作标签,因为它被 semver 解释为 >=1.4.0 <1.5.0. 请参阅 https://github.com/npm/npm/issues/6082。

避免标签出现语义问题的最简单方法是使用不以数字或字母开头的标签 v

# 配置

# 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 配置中指定了一个或多个工作空间。

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

# include-workspace-root

  • Default: false
  • Type: Boolean

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

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

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

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