咱们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
资料参考: