咱們npm publish發佈的時候,必定是本地文件發佈到遠程倉庫,而且登陸到http://registry.npmjs.org(即npm adduser或npmlogin)以後,才能夠進行發佈。javascript
1、npm包結構(編寫)html
npm包實際是一個存檔文件,即一個目錄直接打包爲.zip或tar.gz格式的文件,安裝後解壓還原爲目錄。徹底符合CommonJS規範的包目錄應該包含以下這些文件。java
package.json : 包描述文件。npm
bin: 用於存放可執行二進制文件的目錄。json
lib:用於存放javascript代碼的目錄。gulp
doc:用於存放文檔的目錄。app
test: 用於存放單元測試用例的代碼。單元測試
咱們開發npm包模塊的時候,就能夠按照以上目錄結構,進行開發。測試
1.npm init this
生產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>
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
資料參考: