說起node,大家都很熟悉了,隨著node一起下載安裝的還有我們的包管理工具npm(node package manager).我們平時也是一直在使用npm的,但大部分時候,我們使用的都是別人的包.假如有一天我們自己寫了一個包,想要上傳到npm上面去,流程是怎麼樣的?
建立一個資料夾並且進入這個資料夾
mkdir publish-test && cd $_
複製程式碼
初始化一個package
我用的是yarn,初始化命令如下:
yarn init
複製程式碼
大家如果用的是npm的話就是:
npm init
複製程式碼
一步步的將配置資訊填入,也可以直接使用下面的命令快速生成
yarn init -y
複製程式碼
注意:這裡的包名是不能和npm上的包有重複的,有時候包名相似的話npm也是會提醒你的,可以去npm官方搜尋你的包名,看是否已經被使用了
編寫包內容
新建一個index.js檔案,隨便寫一句程式碼,比如:
console.log(111)
複製程式碼
準備釋出
npm官方地址 點選官方地址去註冊,並且通過郵箱的驗證,若是不通過驗證的話,後面的釋出流程會提示你去驗證, 註冊好npm賬號以後,我們的釋出流程就正式開始了.第一次釋出的話,我們要使用如下命令:
npm adduser
複製程式碼
以後的話,可以使用
npm login
複製程式碼
在輸入完 npm adduser 之後,就要求輸入使用者名稱/密碼/郵箱,結果輸入完以後出現了一個報錯
409 Conflict - PUT http://registry.npm.taobao.org/-/user/org.couchdb.user:ezlou - [conflict] User ezlou already exists
複製程式碼
這是因為我們目前的npm源是淘寶映象,淘寶映象是不允許我們上傳自己包的,所以我們要切回原先的npm的映象,如何檢視當前的源:
npm config get registry
複製程式碼
可以看到我們當前源是淘寶映象,我們需要將其切換到原先的源
npm config set registry https://registry.npmjs.org
複製程式碼
切換完以後,重新登入,出現瞭如下的提示,說明登入成功
釋出
npm publish
複製程式碼
出現如下圖所示:
可以看到 包名+版本 顯示在終端上了,說明我們的包已經發布成功了,然後我們去npm個人中文看自己釋出的包 www.npmjs.com/settings/xx… 這裡將xxx替換成自己的使用者名稱可能會踩到的坑
如下圖:
說明你沒有釋出這個包的許可權,很有可能就是因為你的包名和別人的包名重複了.我們修改下包名,在其後面加上一個2,然後繼續釋出 這時候可能會提示包名過於類似,並且它建議我們可以使用 @我們的使用者名稱/包名 這樣的格式去釋出自己的包.並且釋出的時候命令變成了npm publish --access=public
複製程式碼
這句話的意思是將我們釋出的包變成一個公開包,讓大家都能訪問到.因為現在我們的包名是 @我們的使用者名稱/包名 這種格式,這種以使用者名稱自己名字開頭的包預設是當作私有包的,而私有包是需要收費的,所以如果這時候我們不加上後面的修飾的話,就會出現如下的報錯:
我們加上 --access=public,將其變成一個公開包,重新發布一下,可以看到釋出成功了! 自此,我們自己的包就釋出成功了,過一會兒別人就可以通過命令下載安裝我們的包了更新包
如果我們的程式碼有了更新,我們可以重新將包釋出到npm上去,但是注意,包的版本號必須和之前是不一樣的,npm不允許上傳相同版本的包.這裡更新包版本也有兩種方式
- 直接在package.json 中手動修改包的版本
- 通過npm指令來修改
npm version patch //補丁版本,最後一位數加1
npm version minor //增加了新功能 中間的數字加1
npm version major //大改動,不向下相容 第一位數字加1
複製程式碼
我們根據這次包的修改內容,來決定我們這次更新的版本號
刪除包
假如我們要刪除自己釋出的包的話,使用下面的命令
npm unpublish --force
複製程式碼
注意:只有在釋出的24小時內可以刪除包. 基本上,一個包的釋出流程就是以上這些啦!