雖然自從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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。