FED

©FrontEndDev.org
2015 - 2024
web@2.23.0 api@2.21.1

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