npm @next tag alpha
虽然自从leftpad事件之后,NPM取消了npm unpublish
和npm 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.1
到latest
,那么我们会得到:
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.0.0设置成最新的正式版
$ npm dist-tag add my-package@1.0.0 latest
-
把1.0.0-alpha.1更新到最新的测试版
$ npm dist-tag add my-package@1.0.0-alpha.1 next
老板再也不用担心我搞出线上故障了。
作者:寂寞的原子
链接:https://www.jianshu.com/p/91902bae5572
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。