如何发布一个 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:
</>