npm publish 的时候的最新版本 ,比如 先发布了一个 1.0.2,然后发布了一个1.0.1 ,那么用户默认安装,实际会安装的是哪个版本?
在 npm 发布时,用户默认安装的是最新发布的版本(latest tag 指向的版本),而不是版本号最高的版本。
根据你的例子:
- 先发布 1.0.2 → 此时 latest 指向 1.0.2
- 然后发布 1.0.1 → 此时 latest 会指向 1.0.1(因为它是最后发布的)
所以用户执行 npm install your-package
时:
- 会安装 1.0.1 版本(因为它是最后发布的,且自动获得了 latest tag)
关键点说明:
- npm 的
latest
tag 默认会指向最后发布的版本 - 版本号大小不影响安装,发布时间顺序才是决定因素
- 你可以通过
npm dist-tag
命令手动修改 tag 指向
验证方法:
# 查看包的 tag 信息
npm view your-package dist-tags
# 通常会显示类似:
# { latest: '1.0.1' }
最佳实践建议:
- 不要发布比当前 latest 版本号更低的版本
- 如果必须这样做,可以:
- 使用
npm publish --tag legacy
给旧版本打特定 tag - 然后用户可以通过
npm install your-package@legacy
安装
- 使用
- 使用
npm deprecate
标记不推荐使用的版本
如果需要更精确的版本控制,可以考虑使用 semver 范围指定版本。