包(package)
CommonJS的包规范允许将多个模块组合为一个完整的功能,就是一个包
包规范由包结构和包描述文件两个部分组成
- 包结构
bin
- 二进制的可执行文件,一般都是一些工具包中才有
lib
- js文件
doc
- 文档
test
- 测试代码
package.json
- 包的描述文件
- package.json
- 它是一个json格式的文件,在它里面保存了包各种相关的信息
name 包名
version 版本
dependencies 依赖
main 包的主要的文件
bin 可执行文件
Math 包结构如图所示
npm(Node Package Manager node的包管理器)
通过npm可以对node中的包进行上传、下载、搜索等操作,npm会在安装完node以后,自动安装。
下面简单示例演示webStorm中如何通过npm引用math包。
一、执行npm install math之前,根目录下一般要有 package.json,先在01.node文件下通过node init 生成package.json
二、npm 安装math包
其中package.json,包含依赖信息
三、index.js 中引用math
/*
通过npm下载的包都放到node_modules文件夹中
我们通过npm下载的包,直接通过包名引入即可
*/
var math = require("math")
console.log(math.add(1,4));
npm常用指令
npm -v 查看npm的版本
npm version 查看所有模块的版本
npm init 初始化项目(创建package.json)
npm i/install 包名 安装指定的包
npm i/install 包名 --save 安装指定的包并添加依赖
npm i/install 包名 -g 全局安装(一般都是一些工具)
npm i/install 安装当前项目所依赖的包
npm s/search 包名 搜索包
npm r/remove 包名 删除一个包
CNPM
当然我们也可以通过cnpm从中国镜像服务器下载资源,使用cnpm之前需要执行以下指令
npm install -g cnpm --registry=https://registry.npm.taobao.org
Node包搜索流程
Node在使用模块名字来引入模块时,它会首先在当前目录的node_modules中寻找是否含有该模块
如果有则直接使用,如果没有则去上一级目录的node_modules中寻找
如果有则直接使用,如果没有则再去上一级目录寻找,直到找到为止
直到找到磁盘的根目录,如果依然没有,则报错