跳到主要内容

Node 封装模块

概述

Node.js 框架的最强大功能之一是能够轻松使用 NPM(Node 包管理器)安装各种各样的 Node 封装模块(Node Packaged Module)。

所谓的“Node 封装模块”,其实就是一个按照 Node.js 规定打包的 JavaScript 库。这样就可以很容易地在不同的项目中被分享、重用和安装。Node 封装模块由许多不同的第三方机构创建,Node.js 社区每天都有许多模块被新增或更新,为 Node.js 框架提供了各式各样的功能。

Node 模块组成

每个 Node 封装模块都包括一个 package.json 文件,它包含了 Node 模块的元数据信息,如名称、版本、作者和贡献者,以及控制元数据,比如依赖和当执行诸如安装与发布动作时,Node 包管理器将使用的其他要求。

package.json 文件

所有 Node 模块必须在其根目录中包含一个 package.json 文件,是用于定义模块及其依赖关系的一个简单的 JSON 文本文件。该文件可以包含多个不同的指令来告诉 Node 包管理器如何处理模块。

下面是一个包含名称、版本、描述和依赖关系的 package.json 文件的例子:

{
"name": "my_module",
"version": "0.1.0",
"description": "a simple node.js module",
"dependencies": {
"express": "latest"
}
}

其中,必需的指令只有名称(name)和版本(version),其余可以按需添加。如果执行 npm install 命令没有指定模块,那么 npm 会查找 package.json 文件,根据依赖关系安装模块。

下面是 package.json 文件中各指令的说明和示例。

name 是包的唯一名字,例如:

"name": "getiot"

preferGlobal 表示该模块更倾向于在全局范围内安装,例如:

"preperGlobal": true

version 是该模块的版本,例如:

"version": 0.0.1

author 是项目的作者,例如:

"author": "rudy@getiot.tech"

description 是模块的文字说明,例如:

"description": "a peace planet"

contributors 是模块的其他贡献者,例如:

"contributors": [{
"name": "tina",
"email": "tina@getiot.tech"
}]

bin 表示随项目安装的二进制文件,例如:

"bin": {
"excalibur": "./bin/flower"
}

scripts 表示启动 Node 时执行的控制台应用程序的参数,例如:

"scripts": {
"start": "node ./bin/flower",
"test": "echo testing"
}

main 表示应用程序的主入口点,它可以是一个二进制或 .js 文件,例如:

"main": "./bin/flower"

repository 表示存储库类型和包的位置,例如:

"repository": {
"type": "git",
"location": "https://github.com/getiot/xxx.git"
}

keywords 表示出现在 npm search 中的关键词,例如:

"keywords": [ "iot", "sensor" ]

dependencies 表示此模块依赖的模块和版本,可以使用 *x 通配符,例如:

"dependencies": {
"express": "latest",
"connect": "2.x.x",
"cookies": "*"
}

engines 表示此包可使用的 Node 版本,例如:

"engines": {
"node": ">=0.6"
}