npm publish 發布


前言

  我們npm publish發布的時候,一定是本地文件發布到遠程倉庫,並且登錄到http://registry.npmjs.org(即npm adduser或npmlogin)之后,才可以進行發布。

一、npm包結構(編寫)

  npm包實際是一個存檔文件,即一個目錄直接打包為.zip或tar.gz格式的文件,安裝后解壓還原為目錄。完全符合CommonJS規范的包目錄應該包含如下這些文件。

  package.json : 包描述文件。

  bin: 用於存放可執行二進制文件的目錄。

  lib:用於存放javascript代碼的目錄。

  doc:用於存放文檔的目錄。

  test: 用於存放單元測試用例的代碼。

  我們開發npm包模塊的時候,就可以按照以上目錄結構,進行開發。

二、npm包發布

  1.npm init 

  生產package.json文件,里面要注意參數,repository:""一定要填寫倉庫地址,因為最后npmjs,會從線上倉庫獲取。

  2.注冊包倉庫賬號

  為了維護包,NPM必須要使用倉庫賬號才允許將包發布到倉庫中。注冊賬號的命令是npm adduser。這也是提問式的交互,按順序進行即可:

npm adduser
Username:pingfan
Email:(xxx@sinaapp.com)

  如果已經注冊賬號:

  則我們用npm login 登錄即可

  證明是否登錄成功:

  npm who am i

  3.上傳npm包

  上傳包的命令是 npm publish <floder> .在剛剛創建的package.json文件所在的目錄下,執行npm publish .開始上傳,相關代碼如下:

npm publish .
npm http PUT http://registry.npmjs.org/net-scan
npm http 400 http://registry.npmjs.org/net-scan
npm http PUT http://registry.npmjs.org/net-scan
npm http 201 http://registry.npmjs.org/net-scan
npm http GET http://registry.npmjs.org/net-scan
npm http 200 http://registry.npmjs.org/net-scan
npm http PUT http://registry.npmjs.org/net-scan/-/net-scan-0.0.0.tgz/-rev/1-96a1
2fd6f9e8e5359489a9f59d114f90
npm http 201 http://registry.npmjs.org/net-scan/-/net-scan-0.0.0.tgz/-rev/1-96a1
2fd6f9e8e5359489a9f59d114f90
npm http PUT http://registry.npmjs.org/net-scan/0.0.0/-tag/latest
npm http 201 http://registry.npmjs.org/net-scan/0.0.0/-tag/latest
+ net-scan@0.0.0

  如果你以后修改了代碼,然后想要同步到 npm 上的話請修改 package.json 中的 version 然后再次 publish,更新的版本上傳的版本要大於上次

 

 

  4.安裝包

  為了體驗和測試自己上傳的包,可以換一個目錄執行 npm install xxx --save 安裝它:

npm install xxx -save --registory=http://registory.npmjs.org

  

  管理包權限:

  通常,一個包只有一個擁有權限進行發布。如果需要多人進行發布,可以使用npm owner 命令幫助你管理包的所有者:

  npm owner ls eventproxy

  使用這個命令,也可以添加包的擁有者,刪除一個包的擁有者:

npm owner ls <package name>
npm owner add <user> <package name>
npm owner rm <user> <package name>

三、npm包發布問題及解決

  

  1.使用 cnpm 的注意報錯:

no_perms Private mode enable, only admin can publish this module

  設置回原本的就可以了:

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

  2.npm包package.json中registory屬性一定要填寫,每次publish npm時package.json中version版本一定要大於上一次。

    3.npm publish failed put 500  unexpected status code 401這樣的報錯信息,往往是沒有登錄成功,操作npm login

 

資料參考:

  npm publish 發布示例

  編寫自己的NPM包

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM