npm publish 的时候的最新版本 ,比如 先发布了一个 1.0.2,然后发布了一个1.0.1 ,那么用户默认安装,实际会安装的是哪个版本?

在 npm 发布时,用户默认安装的是最新发布的版本(latest tag 指向的版本),而不是版本号最高的版本。

根据你的例子:

  1. 先发布 1.0.2 → 此时 latest 指向 1.0.2
  2. 然后发布 1.0.1 → 此时 latest 会指向 1.0.1(因为它是最后发布的)

所以用户执行 npm install your-package 时:

  • 会安装 1.0.1 版本(因为它是最后发布的,且自动获得了 latest tag)

关键点说明:

  1. npm 的 latest tag 默认会指向最后发布的版本
  2. 版本号大小不影响安装,发布时间顺序才是决定因素
  3. 你可以通过 npm dist-tag 命令手动修改 tag 指向

验证方法:

# 查看包的 tag 信息
npm view your-package dist-tags

# 通常会显示类似:
# { latest: '1.0.1' }

最佳实践建议:

  1. 不要发布比当前 latest 版本号更低的版本
  2. 如果必须这样做,可以:
    • 使用 npm publish --tag legacy 给旧版本打特定 tag
    • 然后用户可以通过 npm install your-package@legacy 安装
  3. 使用 npm deprecate 标记不推荐使用的版本

如果需要更精确的版本控制,可以考虑使用 semver 范围指定版本。

posted @ 2025-05-23 14:49  龙陌  阅读(69)  评论(0)    收藏  举报