npm發包流程

閃現A小兵發表於2019-12-25

說起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不允許上傳相同版本的包.這裡更新包版本也有兩種方式

  1. 直接在package.json 中手動修改包的版本
  2. 通過npm指令來修改
npm version patch  //補丁版本,最後一位數加1 
npm version minor  //增加了新功能 中間的數字加1
npm version major //大改動,不向下相容 第一位數字加1
複製程式碼

我們根據這次包的修改內容,來決定我們這次更新的版本號

刪除包

假如我們要刪除自己釋出的包的話,使用下面的命令

npm unpublish --force
複製程式碼

注意:只有在釋出的24小時內可以刪除包. 基本上,一個包的釋出流程就是以上這些啦!

相關文章