【RN】如何發(fā)布代碼到npm官方倉庫

前言

有時候我們想把自己的組件像在github上提供的以npm方式安裝到本地的方式給別人用驻右,我們就可以到npm官方網(wǎng)站注冊自己的賬號并以CLI的形式將自己的代碼發(fā)布到npm官方倉庫唉俗。

但是粘拾,目前來說炭序,我們可以發(fā)布到npm官方倉庫的組件或庫都是公開的,這意味著是開源的酣胀,也就是任何人都可以搜索到你發(fā)布的這個倉庫并且安裝使用信卡。

官方目前提供2種方式,一種是免費的幔妨,也就是我們剛才說的公開的鹦赎,這種方式不會限制你發(fā)布多少包到npm,你發(fā)布十個误堡、百個甚至上千個都行古话,只要你開心,想發(fā)就發(fā)锁施;另一種方式是收費的陪踩,具體的價格npm官方價格說明杖们,當然,這種收費的好處是肩狂,我們可以發(fā)布私有倉庫摘完,這種私有倉庫別人未經(jīng)授權是看不到摸不著。如果你只是想把自己的組件開源給別人用傻谁,發(fā)揚開源精神孝治,那么使用免費的就可以了,如果你不想提供給別人用栅螟,比如說是公司內(nèi)部的一些業(yè)務組件荆秦、功能組件等,那么除了npm官方收費的方式以外力图,也有一些其他創(chuàng)建私有npm倉庫的方式步绸。但是在這篇文章中,只講發(fā)布免費版的倉庫吃媒。

注冊

首先第一件事就是注冊瓤介,你必須擁有一個npm賬號才能發(fā)布包,這是一個必須的步驟赘那。

Sign Up.png
  • 2.填寫注冊信息,然后點擊Create an Account
Sign Up.png
  • 3.登錄郵箱募舟,將類似紅框中的鏈接復制到你的瀏覽器中祠斧,回車,驗證完畢
Verify Email.png
  • 4.注冊成功拱礁,你將看到如下界面
Success.png

創(chuàng)建&發(fā)布包

  • 1.打開terminal琢锋,隨便找一個文件夾作為測試倉庫,執(zhí)行npm adduser
init.png

圖中的langke_npm是我自己隨便創(chuàng)建的文件夾呢灶,你也可以自己隨意命名創(chuàng)建吴超,開心就好。另外鸯乃,你也可以使用npm login來代替命令npm adduser鲸阻,兩者并沒有什么區(qū)別,如果不信缨睡,那就看這里見識一下官方npm login & npm adduser鸟悴。然后,輸入用戶名宏蛉、密碼遣臼、郵箱,注意拾并,輸入密碼的時候你是看不見的揍堰,這是terminal為了保護你的安全鹏浅,做了隱藏,出現(xiàn)類似Logged in as langke007 on http://registry.npmjs.org/.屏歹,你已經(jīng)登錄成功隐砸。

  • 2.初始化倉庫,執(zhí)行npm init
npm init.gif

執(zhí)行npm init后蝙眶,會填寫一些相應信息季希,根據(jù)提示填寫即可,沒什么難度幽纷,結束后會生成一個package.json文件式塌,里面就包含你填寫的所有信息。

  • 3.創(chuàng)建README.md友浸、index.js文件
instruction.png
  • 4.發(fā)布峰尝,執(zhí)行npm publish
?  langke_npm npm publish
npm notice
npm notice ??  langke_npm_demo@1.0.0
npm notice === Tarball Contents ===
npm notice 60B  index.js
npm notice 292B package.json
npm notice 33B  README.md
npm notice === Tarball Details ===
npm notice name:          langke_npm_demo
npm notice version:       1.0.0
npm notice package size:  410 B
npm notice unpacked size: 385 B
npm notice shasum:        730c17ff5fd22e05d0a1e05088b74066667c292d
npm notice integrity:     sha512-+80RanxwwDwTv[...]ZJDWYN+EDm37w==
npm notice total files:   3
npm notice
+ langke_npm_demo@1.0.0
npm publish.gif

進入到網(wǎng)頁,你就可以看到剛才所發(fā)布的包收恢,具體見上圖武学。如果發(fā)布遇到類似npm ERR! no_perms Private mode enable, only admin can publish this module的錯誤,應該是鏡像源的問題伦意,使用官方鏡像源火窒,執(zhí)行npm config set registry http://registry.npmjs.org

使用剛才發(fā)布的包

我這里是React Native項目驮肉,但是都是一樣的道理熏矿,到根目錄下執(zhí)行

  • 1.安裝
npm install langke_npm_demo

然后在項目中的文件里導入

  • 2.使用
import {printHello} from 'langke_npm_demo';

...

printHello()

取消發(fā)布

使用命令npm unpublish <package-name> -f來取消發(fā)布,這樣的話离钝,你剛才發(fā)布的包就會被撤回曲掰,等于沒有發(fā)布!

[圖片上傳失敗...(image-b61575-1576926092194)]

在新電腦或者新目錄下更新并發(fā)布已有的npm包

如果你換了一臺新電腦奈辰,或者刪除了剛才所創(chuàng)建的npm包,那么可以在新電腦或者新目錄下乱豆,執(zhí)行

npm install <package-name>

安裝結束后奖恰,你會看到一個node_modules文件夾,里面有你剛才創(chuàng)建的npm包宛裕,然后一切都和前面的發(fā)布一樣瑟啃,修改任意你想修改的文件,在有package.json文件的目錄下揩尸,執(zhí)行npm publish就可以了蛹屿。但是要記住,每一次發(fā)布npm包都需要修改版本號岩榆,否則你將發(fā)布失敶砀骸坟瓢!具體修改版本號后面也有常用的配套命令介紹,往下看犹撒,沒興趣的話折联,就到此為止。

關聯(lián)github

有時候我們看到別人發(fā)布到npm官方倉庫的包识颊,具有如下紅框中的部分诚镰,也就是關聯(lián)到github,包括Issues祥款、Pull Requests等等

sample.png

為了讓我們的公共倉庫也能關聯(lián)到github清笨,我們可以在創(chuàng)建npm包的時候填寫git repository一欄填寫github的某個倉庫的https地址,如下

npm github.gif

這里我已經(jīng)提前在github上創(chuàng)建了一個langke-npm-demo1的倉庫了刃跛,所以關聯(lián)地址的時候抠艾,之后復制過去就好了。

一些常用npm命令介紹

  • 查看當前登錄的npm用戶
npm whoami
  • 查看npm配置
npm config ls
  • 查看當前使用的npm鏡像源
npm config get registry
  • 切換npm鏡像源
npm config set registry 【這里是鏡像源url】

npm修改版本號

比如要將版本號從1.0.0修改為2.0.0奠伪,有2種方式

一 手動修改

直接修改package.json文件中的版本號

原來的package.json內(nèi)容

{
  "name": "react-native-demo-for-npm",
  "version": "1.0.0",
  "description": "this is just a npm demo",
  ......
}

修改為

{
  "name": "react-native-demo-for-npm",
  "version": "2.0.0",
  "description": "this is just a npm demo",
  ......
}

二 命令修改

  • 1.修改指定版本號

在有package.json的當前目錄下跌帐,使用

npm version 新版本號

比如

npm version 2.0.0

這樣的話,在發(fā)布之前绊率,就可以將版本號從1.0.0修改為2.0.0了谨敛。

  • 2.由npm命令生成有序版本號

2.1) 修改主版本號,如果當前版本號是1.0.0滤否,要修改為2.0.0脸狸,使用

npm version major

這種方式一般用于包的大幅度改動,如增加了大量了API或者發(fā)生其他大量的內(nèi)容修改藐俺。

2.2) 修改次版本號炊甲,比如當前版本號是1.0.0,要修改為1.1.0欲芹,使用

npm version minor

這種方式一般用于包的小幅度改動卿啡,比如增加了一些API的前后兼容,擴展等等颈娜。

2.3)修改補丁版本號,比如當前版本號是1.0.0浙宜,要修改為1.0.1官辽,使用

npm version patch

這種方式一般用于打補丁,也就是一些bug修復粟瞬,沒有做其他太大的內(nèi)容變化同仆。

  • 查看已發(fā)布的npm包所有版本
npm view react-native-demo-for-npm versions

撤銷已經(jīng)發(fā)布的包

  • 一 撤銷整個包

1.1)如果已經(jīng)將npm包發(fā)布到遠程npm倉庫,但是又想撤銷發(fā)布

npm unpublish <package-name> -f

比如裙品,已經(jīng)發(fā)布到npm倉庫的包名叫做react-native-demo俗批,那么運行

npm unpublish react-native-demo -f

react-native-demo就從npm倉庫上刪除了俗或,你也無法再從npm倉庫搜索到這個包。

1.2)如果開啟了2FA(two-factor authentication)扶镀,那么就需要在publish后面加上--otp=123456蕴侣,這里的123456是手機上app(app名稱叫做 Authenticator)獲取的授權碼

npm unpublish --otp=123456 react-native-demo -f
  • 二 撤銷具體的版本

2.1)如果想要撤銷已經(jīng)發(fā)布的具體版本,則可以使用

npm unpublish <package-name>@<version>

比如臭觉,現(xiàn)在有2個版本昆雀,分別是v1.0.0v1.2.0蝠筑,想要撤銷v1.2.0狞膘,可以

npm unpublish react-native-demo@1.2.0

2.2)同樣地,如果開啟了2FA(two-factor authentication)什乙,那么就需要在publish后面加上--otp=123456挽封,這里的123456是手機上app(app名稱叫做 Authenticator)獲取的授權碼

npm unpublish react-native-demo@1.2.0 --otp=123456

注意:撤銷整個包或具體的版本只有在從開始發(fā)布內(nèi)的72小時內(nèi)有效,具體見 官網(wǎng):Unpublishing packages from the registry

下一篇文章將介紹 verdaccio+ngrok發(fā)布npm私有倉庫

個人博客地址

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末臣镣,一起剝皮案震驚了整個濱河市辅愿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忆某,老刑警劉巖点待,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弃舒,居然都是意外死亡癞埠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門聋呢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苗踪,“玉大人,你說我怎么就攤上這事削锰⊥ú” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵器贩,是天一觀的道長测暗。 經(jīng)常有香客問我,道長磨澡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任质和,我火速辦了婚禮稳摄,結果婚禮上僵娃,老公的妹妹穿的比我還像新娘砰琢。我一直安慰自己狸吞,他們只是感情好炬灭,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仗阅,像睡著了一般昌讲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上减噪,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天短绸,我揣著相機與錄音,去河邊找鬼筹裕。 笑死醋闭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的朝卒。 我是一名探鬼主播证逻,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抗斤!你這毒婦竟也來了囚企?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瑞眼,失蹤者是張志新(化名)和其女友劉穎龙宏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體负拟,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡烦衣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掩浙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片花吟。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厨姚,靈堂內(nèi)的尸體忽然破棺而出衅澈,到底是詐尸還是另有隱情,我是刑警寧澤谬墙,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布今布,位于F島的核電站,受9級特大地震影響拭抬,放射性物質發(fā)生泄漏部默。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一造虎、第九天 我趴在偏房一處隱蔽的房頂上張望傅蹂。 院中可真熱鬧,春花似錦、人聲如沸份蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婚夫。三九已至浸卦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間案糙,已是汗流浹背限嫌。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侍筛,地道東北人萤皂。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像匣椰,于是被迫代替她去往敵國和親裆熙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355