包 package
创建一个目录,将js模块文件放进去,依赖放进去,在写一个package.json文件到根目录下,这就是一个包;
commonjs的包结构规范:
package.json 必须得有,包的整体描述文件
name 包名
description 描述
version 版本
keywords 关键字(搜索)
maintainers 主要开发者
contributors 参与贡献者
bugs bug提交方式
license 版权
repositories
dependencies 依赖
homepage 官网
os
cpu
engine
builtin
directories 目录
implementsscripts
author
bin
main
devDependencies
bin/ 可直接执行的二进制脚本文件
lib/ 依赖的库
doc/ api说明文档等
test/ 单元测试
index.js 入口文件
npm (node package manager)
npm init 初始化一个package.json文件
npm
npm -v
npm version
npm search package
npm install/i package
npm install/i package -g 全局安装的包一般是作为系统的工具使用 如打包,编译
npm remove/r package
npm install package --save 安装包并添加到自己项目的package.json的依赖中(常用)
npm install 文件路径 从本地安装
npm install 包名 -registry=地址 从镜像源安装
npm config set registry 地址 设置镜像源
npm remove express --save 移除同时,也从依赖中移除
npm install -g cnpm --registry=https://registry.npm.taobao.org 使用淘宝的源
cnpm的使用和npm一致
eg. 安装一个math模块,并使用它
npm i install math --save
var math = require('math');
console.log(math, math.add(12,34))
下载的包,默认位于项目根目录的 /node_modules/下
项目上传时,一般都不会上传node_modules目录,因为这个数据量很大,此时一般我们的package.json的依赖中有需要的模块,上传到服务器端后,直接执行 npm install 会自动下载所有的依赖;
npm下载的包,require()引入时,直接使用包名即可
require()引入包,查找包路径流程
node在使用模块名字来引入模块时,它会首先在当前目录的 node_modules 中寻找是否含有该模块,
如果有,则直接使用, 如果没有则去上一级目录的 node_modules 中寻找,
如有,则直接使用,如果没有则再去上一级目录寻找,直到找到为止,
直到找到磁盘的根目录,如果依然没有,则报错