nodejs笔记2 包管理 npm
包
即nodejs第三方模块
npm
包管理工具
切换包镜像源
淘宝源
npm config set registry=https://registry.npm.taobao.org/
nrm 镜像源管理工具
- 安装
npm i nrm -g
- 查看所有可用镜像源
nrm ls
- 切换镜像源
nrm use taobao
i5ting_toc MD转HTML工具
- 安装
npm i i5ting_toc -g
- 使用
i5ting_toc -f readme.md -o
发布npm包
- 登录npm
npm login
- 发布
npm publish
- 删除(只能删除72小时内发布的包,删除的包24小时内不允许重复发布)
npm unpublish pkgname --force
模块加载
require(module_name)
- 优先加载缓存
- 内置模块优先级最高,node_modules中有内置模块重名模块不会被加载
- 加载自定义模块是必须指定以./或…/开头的路径,否则将当作内置模块或第三方模块加载
- 自定义模块文件加载顺序:
- 确切文件名对应文件
- 补.js扩展名
- 补.js扩展名
- 补.node扩展名
- 报错
- 如果模块标识符不是内置模块,也没有./或…/开头,则从当前模块的父目录开始,尝试从/node_modules文件夹加载第三方模块
- 如果当前目录没有找到第三方模块,则移动到上一层目录查找/node_modules,直到根目录
- 模块标识符是目录时加载顺序:
- 目录下查找package.json文件,寻找main属性作为加载入口
- 没有package.json,或main不存在,则尝试加载目录下index.js
- 没有index.js, 报错
package-lock.json
记录node_modules目录下每个包的下载信息(包名,版本,下载地址)
package.json
包管理配置文件
- 项目基本信息(名称,版本,描述)
- main(包的入口,通过require导入包时,自动导入main指向的js文件,因此自定义包时,需要通过入口js文件暴露其他js文件模块)
- 依赖的包(开发,部署各自所依赖的包)
- 创建包管理配置文件
npm init -y
- 安装包(自动下载包,并将包信息记录到package.json,如果只需要安装到开发环境,例如webpack,后面追加参数–save-dev)
npm install pkgname
- 一次性安装所有包(安装package.json中记录的所有包)
npm install
- 卸载包(自动删除package.json中依赖信息)
npm uninstall pkgname