如何发布一个 nodejs npm package
1、认识 npm
在认识 npm 之前,你必须对 nodejs 有一定的了解。
Node包管理器(Node Package Manager)。它是一个javascript的软件套件管理系统,预设环境为Node.js,从Node.js0.6.3版本开始,npm被自动附带在安装包中。
npm运行在命令行下,并用于管理相依性套件,npm也允许使用者安装在npm registry 上的Node.js应用程序。 npm由Isaac Z. Schlueter开发[1],为了符合CommonJS的规范,如PHP之于(PEAR)、Perl之于(CPAN),进而开发出npm。
—— 维基百科
通过 npm 可以管理项目的需要和系统需要的模块。常用命名有:
## 项目本地安装与卸载
npm install --save package
npm uninstall --save package
## 系统全局安装与卸载
npm install --global package
npm uninstall --global package
2、认识 package.json
package.json 是描述一个 package 的文件,包含了模块的名称、版本、依赖等其他信息。
{
"name": "YOUR_PACKAGE_NAME",
"version": "1.0.0",
"private": false,
"description": "模块描述",
"scripts": {},
"preferGlobal": false,
"bin": {},
"main": "index.js",
"keywords": [
"关键词"
],
"author": {
"name": "cloudcome",
"email": "cloudcome@163.com",
"url": "http://ydr.me"
},
"homepage": "模块主页,通常是 github 主页",
"repository": {
"type": "git",
"url": "模块仓库主页,通常是 github 主页"
},
"bugs": {
"url": "模块 bug 反馈主页,通常是 github issues 页"
},
"dependencies": {},
"devDependencies": {},
"licenses": "MIT"
}
更多详细描述见这里 https://docs.npmjs.com/files/package.json 。
3、书写主程序
假设我们要写一个 package,名字叫 hei,使用者必须全局安装,实现以下效果:
< hei 你好
> 你好
< hei nodejs
> nodejs
< hei 再见
> 再见
重复你说的话。
新建文件夹nodejs-hei
,目录结构为:
- nodejs-hei
|-- bin
| `-- hei
|-- index.js
|-- package.json
`-- readme.md
index.js
/**
* repeat what you say
* @author ydr.me
* @date 2015-04-20 14:28:37
*/
'use strict';
module.exports = function (what) {
return what;
};
package.json
{
"name": "hei",
"version": "1.0.0",
"private": false,
"description": "repeat what you say",
"scripts": {},
"preferGlobal": true,
"bin": {
"hei": "./bin/hei"
},
"engines": {
"node": ">= 0.10.0"
},
"main": "index.js",
"keywords": [
"repeat",
"cloudcome",
"ydr.me"
],
"author": {
"name": "cloudcome",
"email": "cloudcome@163.com",
"url": "http://ydr.me"
},
"homepage": "https://github.com/cloudcome/nodejs-hei",
"repository": {
"type": "git",
"url": "https://github.com/cloudcome/nodejs-hei"
},
"bugs": {
"url": "https://github.com/cloudcome/nodejs-hei/issues"
},
"dependencies": {},
"peerDependencies": {},
"devDependencies": {},
"licenses": "MIT"
}
- bin 描述的是命令工具的文件
- main 指向的入口文件
readme.md
# hei
repeat what you say
4、书写 bin 文件
bin/hei:
#!/usr/bin/env node
var args =process.argv.slice(2);
var what = args.join(' ');
console.log(what);
注意:
bin 文件的换行符必须是 LF 格式,否则无法在 Linux 内核下正常执行。
5、测试
# 切换到当前项目目录
< node ./bin/hei 呵呵 你好
> 呵呵 你好
6、发布 package
1、首先需要在 npmjs.com 上注册账号: https://www.npmjs.com/signup
2、然后,在命令行里:
npm adduser
会提示你输入用户名和密码。
3、发布
< npm publish
> + hei@1.0.0
4、发布完成 全局安装刚才发布的模块
sudo npm install -g hei
在命令行里敲击:
< hei hello world
> hello world
7、附件
文章示例的 package:
</>