npm publishConfig.tag 选项详解

概述

在 npm 包的 publishConfig 配置中,tag 字段用于指定发布时使用的标签。标签是 npm 包版本管理的重要机制,允许开发者发布不同稳定级别的版本供用户选择。

标准标签选项

1. latest (默认标签)

  • 含义: 稳定版本标签,表示这是最新的稳定版本
  • 使用场景: 生产环境使用的版本
  • npm 发布命令: npm publishnpm publish --tag latest
  • 用户安装命令: npm install package-name (默认安装此标签版本)

2. beta

  • 含义: 测试版本标签,用于预发布测试
  • 使用场景: 功能基本完成但需要进一步测试的版本
  • npm 发布命令: npm publish --tag beta
  • 用户安装命令: npm install package-name@beta

3. alpha

  • 含义: 早期测试版本标签
  • 使用场景: 功能尚未完全实现的早期版本
  • npm 发布命令: npm publish --tag alpha
  • 用户安装命令: npm install package-name@alpha

4. next

  • 含义: 下一主要版本预览
  • 使用场景: 包含重大变更的下一个主要版本的预览
  • npm 发布命令: npm publish --tag next
  • 用户安装命令: npm install package-name@next

5. canary

  • 含义: 每日构建或最新构建版本
  • 使用场景: 自动化构建的最新代码版本
  • npm 发布命令: npm publish --tag canary
  • 用户安装命令: npm install package-name@canary

6. rc (Release Candidate)

  • 含义: 发布候选版本
  • 使用场景: 功能完整,等待最终测试的版本
  • npm 发布命令: npm publish --tag rc
  • 用户安装命令: npm install package-name@rc

7. dev

  • 含义: 开发版本
  • 使用场景: 仍在活跃开发中的版本
  • npm 发布命令: npm publish --tag dev
  • 用户安装命令: npm install package-name@dev

8. experimental

  • 含义: 实验性功能版本
  • 使用场景: 包含实验性功能的版本
  • npm 发布命令: npm publish --tag experimental
  • 用户安装命令: npm install package-name@experimental

配置示例

在 package.json 中的配置方式:

json
{
  "name": "your-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://registry.npmjs.org/",
    "tag": "latest"
  }
}

对于测试版本:

json
{
  "name": "your-package",
  "version": "1.0.0-beta.1",
  "publishConfig": {
    "registry": "https://registry.npmjs.org/",
    "tag": "beta"
  }
}

重要说明

默认行为

  • 如果不指定 tag,npm 默认使用 latest 标签
  • 发布时如果不显式指定标签,会自动使用 latest

标签管理命令

可以使用 npm dist-tag 命令来管理标签:

bash
# 查看所有标签
npm dist-tag ls package-name

# 添加标签
npm dist-tag add package-name@1.0.0 beta

# 删除标签
npm dist-tag rm package-name beta

# 将标签移动到新版本
npm dist-tag add package-name@1.0.1 latest

标签转移策略

  • 发布新版本时,可以将旧版本的标签转移到新版本
  • 通常会将 latest 标签从旧稳定版本转移到新稳定版本
  • 测试标签通常不会自动转移,需要手动管理

自定义标签

除了上述标准标签,还可以使用任何自定义标签名称:

json
{
  "publishConfig": {
    "tag": "my-custom-tag"
  }
}

最佳实践

  1. 版本命名约定: 使用语义化版本控制 (SemVer)

    • 1.0.0: 稳定版本 → latest 标签
    • 1.0.0-beta.1: 测试版本 → beta 标签
    • 2.0.0-alpha.1: 早期版本 → alpha 标签
  2. 发布流程:

    • 开发阶段使用 devalpha 标签
    • 测试阶段使用 beta 标签
    • 预发布使用 rc 标签
    • 稳定发布使用 latest 标签
  3. 用户引导:

    • 在文档中明确说明不同标签的含义
    • 推荐生产环境使用 latest 标签
    • 测试环境可以使用特定标签进行验证

相关命令参考

bash
# 发布带特定标签
npm publish --tag beta

# 安装特定标签版本
npm install package-name@beta

# 查看包的所有可用标签和版本
npm info package-name

CC BY-NC-SA 4.0 乙巳 © 闻 · 斋