如何把自定义的nodejs模块发布到npm
平常在nodejs、vue、react的开发过程中,经常会使用到这样的命令 npm install xxx --save,从npm下载安装模块到本地。
那么问题来了,这些模块是怎么上传的呢,自己可不可以编写一个模块上传到npm,供其他人下载的呢。
肯定是可以的。
一、npm包发布
可以通过npm publish方式将我们的本地模块上传到远程仓库,我们npm publish发布的时候,一定是本地文件发布到远程仓库,并且登录到http://registry.npmjs.org(即npm adduser或npmlogin)之后,才可以进行发布。
实现步骤:
1、npm账号
首先需要一个 npm 的账号. 可以在 https://www.npmjs.com/ 网上注册, 或者 npm adduser
然后登陆这个账号 npm login, 按照提示填入用户名, 密码, 邮箱
2、创建模块目录nodejshello02,并定义模块
hello.js
var str='hello nodeJs';
exports.hello=str; /*暴露模块*/
3、cd进入到nodejshello02模块下 npm init生成,生成 package.json 模板.并且修改 package.json 文件
package.json:
{
"name": "nodejshello02",
"version": "1.0.0",
"description": "",
"main": "hello.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://gitee.com/kerryqpw/nodejsHello.git"
},
"author": "",
"license": "ISC"
}
里包含了模块的基本信息, 最主要是
- name: 模块名称, require 需用到
- version: 版本号
- description: 描述
- main: 主文件
- scripts: 略过
- keywords: 略过
- author: 略过
- license: 略过
- bugs: 略过
- homepage: 略过
- repository 远程仓库信息(大多使用git,码云和github都可以)
4、一键发布: npm publish. 提示完成后就可以在 nodejshello02上找到了. 例如 https://www.npmjs.com/package/nodejshello02
5.npm更新
如果你以后修改了代码,然后想要同步到 npm 上的话请修改 package.json 中的 version 然后再次 publish,更新的版本上传的版本要大于上次
6.安装npm包
为了体验和测试自己上传的包,可以换一个目录执行 npm install xxx --save 安装它:
npm install xxx -save --registory=http://registory.npmjs.org
二、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