npm @next tag alpha

虽然自从leftpad事件之后,NPM取消了npm unpublishnpm publish -f操作,但是我们错误地把测试版发布成正式版之后,不要惊慌,要稳住,因为我们能赢。

概念

首先介绍几个概念:

  • version

    作为开发者,版本号肯定不陌生,发布到npm后,每一个版本号都对应了其资源文件,而且是不可修改的。npm中的版本号类似于git中的tag。

  • tag

    npm中也有个tag的概念,真是混乱。一般情况下,我们可以不指定tag,这时默认就会用latest这个tag,所有发布或者安装都是最新的正式版。而指定tag之后,我们可以在这个tag上发布一个更新的版本,用户安装的时候如果也指定这个tag,则会安装这个tag下的最新版。因此,npm中的tag类似于git中的branch。

总结一下

version一旦发布,是不可变的;
而tag更像一个渠道,只要用户选择了这个渠道,就可以一直更新这个渠道的最新版。

也因此,version和tag是相互独立的。

切换tag

回到我们的问题,如果不小心把1.0.0-alpha.1直接npm publish了,我们该怎么办?

命令一:npm dist-tag ls

查看当前的tag和对应的version。

通过这个命令,我们可以得到这样的结果:

latest: 1.0.0
next: 1.0.0-alpha.0

如果我们不小心发布了一个1.0.0-alpha.1latest,那么我们会得到:

latest: 1.0.0-alpha.1
next: 1.0.0-alpha.0

这个时候我们只要切一下tag就可以挽回局面了。

命令二:npm view my-package versions

查看my-package发布过的所有版本号。

通过这个命令可以得到一个数组:

[ '0.1.0',
  '1.0.0',
  '1.0.0-alpha.0',
  '1.0.0-alpha.1' ]

命令三:npm dist-tag add my-package@version tag

给my-package设置tag,对应到版本version。

如:

  1. 把原来的1.0.0设置成最新的正式版

    $ npm dist-tag add my-package@1.0.0 latest
    
  2. 把1.0.0-alpha.1更新到最新的测试版

    $ npm dist-tag add my-package@1.0.0-alpha.1 next
    

老板再也不用担心我搞出线上故障了。



作者:寂寞的原子
链接:https://www.jianshu.com/p/91902bae5572
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-05-29 08:46  mrt_yy  阅读(2009)  评论(0编辑  收藏  举报