如何在 npm 上發(fā)自己的包

前因:之前在cordova 添加插件的時(shí)候遇到一個(gè)問題 就是 插件與新版本XCode(依賴庫有刪減)存在不兼容的問題,但插件作者其實(shí)已在gitHub 上更新該插件版本, 只是并未更新到npm上,所以有把項(xiàng)目clone下來發(fā)布到自己的npm賬戶的想法,特此記錄操作流程,以便后續(xù)在遇到此問題時(shí)候查看。

首先需要到npm 官網(wǎng)?https://www.npmjs.com/signup 注冊(cè)一個(gè)賬號(hào), 如果有賬號(hào)了可直接在命令行登錄 ,?


終端登錄注冊(cè)好的npm賬號(hào)(需輸入用戶名、密碼、郵箱)

登錄的時(shí)候一定要確認(rèn)自己當(dāng)前npm鏡像源是npm的()而不是淘寶的鏡像

npm config get registry

npm config set registry=http://registry.npmjs.org

上傳完后可設(shè)置回淘寶鏡像(cnpm 命令),方便下載依賴庫 (注意:從淘寶鏡像安裝所有模塊時(shí),當(dāng)發(fā)現(xiàn)模塊還沒同步過來,cnpm 會(huì)自動(dòng)在后臺(tái)與npm 合并, 第一次會(huì)直接從npm源下載,后續(xù)在安裝就直接從淘寶源直接下載安裝)

npm config set registry?http://registry.npm.taobao.org/

如果查看結(jié)果為淘寶鏡像,按照上面的命令設(shè)置為npm源

網(wǎng)上有樓主說用npm的賬號(hào)登錄淘寶鏡像會(huì)報(bào)網(wǎng)絡(luò)錯(cuò)誤,我測試了下,其實(shí)是可以登錄的,只是登錄的是cnpm的鏡像,所以想要上傳到npm,必須切換到npm鏡像


顯示登錄的為淘寶鏡像

接下來就是在本地創(chuàng)建項(xiàng)目了:

? 選擇一個(gè)文件夾目錄:在終端進(jìn)入該文件夾目錄,執(zhí)行npm init 命令

執(zhí)行該命令,接著依次填寫,不想填寫的直接回車,也可以后續(xù)到 package.json 配置文件中修改這些配置

1.name 模塊名,該名稱需要在npm 上是唯一的,之后用戶通過 npm install "當(dāng)前模塊名來引用該庫",所以在定義的時(shí)候可以到?https://www.npmjs.com/?去查詢是否存在當(dāng)前名字的包

2.version 版本號(hào),語義版本號(hào)分為X.Y.Z 三位,代表主版本號(hào),次版本號(hào)和補(bǔ)丁版本號(hào),

所以當(dāng)庫更新時(shí),版本號(hào)應(yīng)按以下原則更新

????a. 如果只是修復(fù)bug,需要更新Z位。

????b. 如果是新增了功能,但是向下兼容,需要更新Y位。

????c. 如果有大變動(dòng),向下不兼容,需要更新X位。

3.?description 介紹自己的模塊

4. main 入口文件,必要, 當(dāng)通過require 或 import 時(shí),是讀取main 里聲明的文件

5.test command? 測試命令? (給出庫的一些可測試的信息)

6.git repository git 倉庫地址

7.keywords? 關(guān)鍵詞,可通過npm搜索這些關(guān)鍵詞找到你的庫

8.author 作者信息 該庫的開發(fā)者信息

9.license: 代碼授權(quán)? (例如 Apache 2.0? 或 MIT 等協(xié)議)

執(zhí)行完上面命令,可在文件夾中生成一個(gè)package.json 的文件


生成的 package.json 文件

接下來就可以在該目錄編寫自己的代碼,或者把別人庫文件拿進(jìn)來修改

最后:發(fā)布模塊? 在當(dāng)前命令直接執(zhí)行 npm publish? 即可直接上傳

有文章說:? npm 將包發(fā)布為公共包,npm修改發(fā)包模式分為私有包和公共包,需要添加–access public命令,不然會(huì)報(bào)錯(cuò) 我發(fā)布的時(shí)候,并不存在這個(gè)問題,大家可以酌情選擇

庫升級(jí)攻略:發(fā)布完之后想升級(jí)庫,步驟如下:

? ? ? a.使用 npm view "庫名" versions 查看遠(yuǎn)端版本, 修改包內(nèi)容,修改后作為新版本進(jìn)行提交

? ? ? b. 修改版本號(hào):使用npm version <update_type> 進(jìn)行修改,update_type 有三個(gè)參數(shù): patch: 這個(gè)是補(bǔ)丁的意思 / minor: 這個(gè)是小版本修改 / major: 這個(gè)是大版本修改

? ? ? ?實(shí)例:? 如 1.0.1? npm version patch??????????????????????????????????????????????????????????????????????????

? ? ? ? ? ? ? ? ? ? 如 1.1.0 npm version minor

? ? ? ? ? ? ? ? ? ? 如 2.0.0 npm version major

? ? ? ? ?修改好后 還得? 直接 npm publish 上傳到遠(yuǎn)端, 就算完成

npm 部分命令 :

? ? a.? npm update "包名" 用于更新node_modules子目錄對(duì)應(yīng)模塊更新到最新版本

? ? b. npm cache clear 可以清空 npm 本地緩存,用于處理庫版本未更新,但代碼更新的情況

? ?c. npm unpublish "包名"@版本號(hào)? 可以撤銷自己發(fā)布過的某個(gè)版本代碼 (但npm 只能刪除發(fā)布24小時(shí)內(nèi)的包,發(fā)布超過24小時(shí)的 可以發(fā)布一個(gè)新版本 里面為空文件,覆蓋以前的包, 然后執(zhí)行npm deprecate my-thing@"< 最新版本號(hào)")? 大家如要更詳細(xì)可自行百度,這里只做記錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容