JS包管理器
什么是包管理器
- 是跨平台运行环境 node.js 中,用来管理包的一个工具,简称 npm
- 安装 node.js 运行环境,将自动安装 npm 包管理
node.js 官网:https://nodejs.org/zh-cn/
什么是包
是依据包规范,使用模块实现的代码集合
即:具有特定文件,和特定结构的,文件夹
包的内容
- package.json
- 描述文件(包的“说明书”,必须要有)
- bin
- 可执行的二进制文件
- lib
- 经过编译的js代码
- doc
- 文档(说明文档,bug修复文档,版本变更记录文档)
- test
- 测试报告
- package-lock.json
- 当安装了一个包,会生成一个 package-lock.json 文件(npm6 及以后才有),里面保存的每个下载过的包的地址,使下次下载速度更快
package.json
"scripts":{...}配置项
| 说明 | 解释 |
|---|---|
| 作用 | scripts 配置项,是用来给常用命令定义别名的 |
| 配置 | "scripts":{ peiqi: "webpack" } |
| 用法 | npm run peiqi |
创建包(也是项目创建的基础)
- 文件夹具有
package.json文件 - 执行
npm init -y - 包的要求:
- 不能有中文
- 不能有大写字母
- 不能与npm仓库上其他包同名
npm
初始化
node.js项目初始化,用于创建 package.jsn 配置文件
npm init
执行
npm run 运行包的可执行文件
- 使用
npm run script执行脚本,需要先在package.json文件中配置相关命令如:"dev":"vite serve" - 使用
npm run script执行脚本的时候都会创建一个shell,然后在shell中执行指定的脚本。 - 这个shell会将当前项目的可执行依赖目录(即node_modules/.bin)添加到环境变量path中,当执行之后之后再恢复原样。 就是说脚本命令中的依赖名会直接找到node_modules/.bin下面的对应脚本,而不需要加上路径
本地安装的包直接执行包的可执行文件
- 使用 npm 安装一个包时,如果该包提供了可执行文件,可执行文件会被安装到当前项目的 node_modules/.bin 目录下
- 通过完整路径,直接执行文件 如:
./node_modules/.bin/vite serve
- 通过npm 命令
npx执行文件npx命令会自动查找当前目录下的node_modules/.bin目录下的可执行文件,并运行它。如果没有找到,会下载然后再执行- 如:
npx vite serve
通过 npm 全局安装的包,可以直接运行包的相关命令。如:tsc -V
查询
| 查询类型 | 命令 | 查询位置 | 参数 | 说明 |
|---|---|---|---|---|
| 查询已安装的包 | npm list [包名] -g --depth 0 |
从 全局安装 中查询包 | 有:包名 | 查询指定 包版本 |
npm ls [包名] -g/-S/-D |
从 当前项目 中查询包 | 无:包名 | 列出 指定环境安装的 所有包 |
| 查询类型 | 命令 | 说明 |
|---|---|---|
| 查询未安装的包 | npm view 包名 versions |
查看指定包的所有版本 |
npm view 包名 version |
查看指定包最新版本 |
| 命令 | 说明 | npm root -g |
查看全局安装的包的位置 |
|---|
安装
一般来说,带有指令集的包要进行全局安装
| 环境 | 命令 | 说明 |
|---|---|---|
| 开发/生产 环境 | npm install |
根据当前目录中 package.json 文件的依赖描述,下载开发/生产环境所有的包 |
npm i |
||
| 全局安装 | npm install 包名 --global |
多个项目都能用到。全局安装的包,其指令到处可用,如果包不带有指令,就无需全局安装 |
npm i 包名 -g |
||
| 开发环境 | npm install 包名 --save-dev |
只在开发环境需要的包,写入 package.json 文件的 devDependecies 开发依赖中 |
npm i 包名 -D |
||
| 生产环境 | npm install 包名 |
npm6 之后的版本,不定义后缀,包依旧写入dependecies 生产依赖中 |
npm install 包名 --save |
在开发 和 部署运行中需要的包,写入 package.json 文件的 dependecies 生产依赖中 | |
npm i 包名 -S |
| 命令 | 说明 |
|---|---|
npm i 包名@版本号 |
安装指定版本包 |
更新
| 命令 | 说明 |
|---|---|
npm update 包名 -后缀 |
后缀与所在依赖保持一致 |
npm aduit fix |
监测项目依赖中的问题,并尝试修复 |
卸载
| 环境 | 命令 | 说明 |
|---|---|---|
| 全局环境 | npm uninstall 包名 -g |
卸载全局包 |
| 开发环境 | npm uninstall 包名 --save-dev |
卸载开发环境的包和声明 |
npm uninstall 包名 -D |
||
| 生产环境 | npm uninstall 包名 |
npm6 之后的版本,不定义后缀,直接卸载生产环境的包和声明 | npm uninstall 包名 --save |
卸载生产环境的包和声明 |
npm uninstall 包名 -S |
||
| 开发/生产 环境 | npm uninstall 包名 |
根据包名,卸载开发或生产环境中的包,并删除声明 |
npm remove 包名 |
【uninstall 别名】根据包名,卸载开发或生产环境中的包,并删除声明 |
更换镜像
| 配置方式 | 命令 | 说明 |
|---|---|---|
| npm 配置 | npm config get registry |
查看当前镜像 |
npm config set registry --url-- |
修改当前镜像 | |
https://registry.npmmirror.com |
淘宝镜像地址 |
| 配置方式 | 命令 | 说明 |
|---|---|---|
| nrm 管理工具配置 | npm i nrm -g |
安装 nrm 镜像地址管理工具 |
nrm ls |
查看镜像地址列表 | |
nrm use 镜像名(taobao) |
切换当前镜像 | |
nrm add 自定义镜像名 url |
添加镜像 | |
nrm del 自定义镜像名 |
删除镜像 |
版本限制
根据 package.json 文件
npm i安装所有包,安装的包的版本可能不是 package.json 中看到的版本
根据 package.json 下载包,下载的包版本由 package.json 特殊符号进行限定
| 格式 | 说明 |
|---|---|
| ^3.1.3 | 锁定大版本,以后安装 包的时候,保证包的版本是 3.x.x 版本,x 默认取最新的 |
| ~3.1.3 | 锁定小版本,以后安装 包的时候,保证包的版本是 3.1.x 版本,x 默认取最新的 |
| 3.1.3 | 锁定完整版本,以后安装 包的时候,保证包的版本必须是 3.1.3 版本 |
cnpm
cnpm 是淘宝发布的包管理工具,用于从淘宝镜像服务器上下载包
- 安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 使用
- 用法与
npm相同,只是把npm命令换成cnpm
- 用法与
- 问题
cnpm命令工具操作有一定问题,比如删除指定包可能删除所有包- 建议修改
npm的镜像地址,使用npm命令
yarn
使用的还是npm库里的包
配置方式
- 全局安装yarn
npm i yarn -g
- 获取程序路径
yarn global diryarn global bin
- 将程序路径配置到 path 环境变量
常用命令
初始化
node.js项目初始化,用于创建 package.jsn 配置文件
yarn init -y
安装
一般来说,带有指令集的包要进行全局安装
yarnyarn install- 安装项目所有声明的依赖
yarn add xxxx@3.2.1- 下载指定包到 生产依赖
yarn add xxxx@3.2.1 -D- 下载指定包到 开发依赖
yarn global add xxxx@2.3.1- 下载指定包到 全局环境
升级
yarn upgrade- 升级所有依赖。不记录在 package.json 中
yarn upgrade xxx- 升级指定包
yarn upgrade [xxx] --latest- 忽略版本规则,升级【全部/指定】包到最新版本,并更新 package.json
删除
yarn remove xxxyarn global remove xxxxnpm remove xxx -g
查询
yarn info xxx- 查看包信息
yarn global list- 查看 全局安装 包
- 只能列出带有指令集的包,普通包不会列出
yarn list- 列出当前项目的依赖
缓存
yarn cache list- 列出已缓存的每个包
yarn cache dir- 返回全局缓存位置
yarn cache clean- 清除缓存
设置淘宝镜像
yarn config set registry --url--
CLI参考资料
https://yarn.bootcss.com/docs/cli/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蚂蚁图书馆!
