Node管理 - nvm
nvm
NVM (Node Version Manager) 是一个用于管理多个 Node.js 版本的工具。 为了解决不同项目依赖的 Node.js 版本不同的问题,支持随时切换版本的工具。
推荐其他管理工具:n、nvm-window、fnm、nvs、nodenv、volta 等
| 命令 | 功能 |
|---|---|
| nvm ls | 列出已经安装的Node.js版本 |
| nvm ls-remote | 列出可安装的Node.js版本 |
| nvm use <版本号> | 临时版本 - 只在当前窗口生效指定版本,例如: nvm use v16.15.0 |
| nvm current | 显示当前正在使用的Node.js版本 |
| nvm install <版本号> | 安装指定版本的Node.js,例如: nvm install v16.15.0 |
| nvm uninstall <版本号> | 卸载指定版本的Node.js,例如: nvm uninstall v16.15.0 |
| nvm alias default <版本号> | 永久版本 - 所有窗口生效指定版本,例如: nvm alias default v16.15.0 |
| nvm reinstall-packages <版本号> | 重新安装指定版本的Node.js,并且重新安装该版本下的 全局npm包,例如: nvm reinstall-packages v16.15.0 |
| nvm --version | 查看nvm版本 |
| nvm --help | 查看nvm所有命令 |
| nvm cache dir | 查看nvm缓存目录 |
| nvm cache clear | 清除nvm缓存目录 |
| nvm alias <别名> <版本号> | 给已安装的版本号设置别名,例如:nvm alias node16 v16.15.0 |
| nvm unalias <别名> | 删除别名,例如:nvm unalias node16 |
| nvm on | 打开nvm |
| nvm off | 关闭nvm |
常用命令
nvm ls:本地一共有5个版本的node.js
- v14.17.4
- v16.15.0
- v18.19.0
- v20.10.0
- v20.16.0
nvm use 、nvm current
踩坑tips
使用node管理工具之前下载了node,请先卸载node相关模块再安装。
// 查看已经安装在全局的模块
npm ls -g --depth=0
// 删除全局 node_modules 目录
sudo rm -rf /usr/local/lib/node_modules
// 删除 node
sudo rm /usr/local/bin/node
// 删除全局 node 模块注册的软链
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
镜像源管理 - cgr
cgr
cgr 是一款镜像源管理插件,可以快速的在npm和yarn中切换。
其他镜像源管理:nrm 等
| cgr | 功能 |
|---|---|
| cgr ls | 列出源仓库地址(npm、cnpm、taobao、yarn) |
| cgr test | 测试所有镜像源响应时间 |
| cgr add <别名> <仓库地址> | 新增新的仓库地址,例如: cgr add company https://x.x.com/npm |
| cgr use <别名> | 切换到指定源仓库地址,例如: cgr use company |
| cgr delete <别名> | 删除源仓库地址,例如: cgr delete company |
常用命令
cgr ls
包管理 - npm、yarn、pnpm
npm pnpm yarn
这些都是Javascript包管理器(Package Manager)。npm 是 Node.js 的官方包管理器,也是全球使用最广泛的 JavaScript 包管理工具;yarn 是由 Facebook 发起的包管理工具,目的是解决 npm 的一些性能和依赖管理问题;pnpm 是一个高效的 JavaScript 包管理器,旨在解决 npm 和 yarn 在磁盘空间使用和依赖安装方面的问题。
其他包管理:ni
| npm | pnpm | yarn | 功能 |
|---|---|---|---|
| npm install | pnpm install | yarn | 初始化安装依赖 |
| npm install <包名> | pnpm add <包名> | yarn add <包名> | 安装指定依赖, 例如: npm install axios |
| npm uninstall <包名> | pnpm remove <包名> | yarn remove <包名> | 删除指定依赖, 例如: npm uninstall axios |
| npm update <包名> | pnpm upgrade <包名> | yarn upgrade <包名> | 更新指定依赖, 例如: npm update axios |
| npm run <命令> | pnpm <命令> | yarn <命令> | 执行package.json中的脚本命令, 例如: npm run serve |
| npm config get registry | pnpm config get registry | yarn config get registry | 查看当前使用镜像源 |
| npm config set registry <地址> | pnpm config set registry <地址> | yarn config set registry <地址> | 全局设置镜像源,例如:npm config set registry https://x.x.com/npm |
| npm --registry <地址> | pnpm --registry <地址> | yarn --registry <地址> | 临时设置镜像源,例如:npm --registry https://x.x.com/npm |
| npm config get cache | pnpm store path | yarn cache dir | 查看缓存目录 |
| npm cache clean --force | pnpm store prune | yarn cache clean | 清除缓存 |
| npm list -g --depth=0 | pnpm list -g --depth=0 | yarn global list | 列出全局包 |
常用命令
npm config get registry、pnpm config get registry、yarn config get registry
对比区别
| 特性 | npm | pnpm | yarn |
|---|---|---|---|
| 安装方式 | npm install | pnpm install | yarn |
| 锁定文件 | package-lock.json | pnpm-lock.yaml | yarn.lock |
| 工作原理 | 递归安装所有依赖到node_modules目录 | 单个全局存储和符号硬链接 | 扁平化依赖树 |
| 安装速度 | 相对较慢,依赖网络速度 | 最快,充分利用磁盘空间和网络资源 | 快于npm,支持并行安装 |
| 缓存机制 | 本地缓存每个项目的依赖 | 共享存储层缓存,避免重复下载 | 共享缓存,保证多个项目的依赖版本一致 |
| 生态系统 | 最大,兼容性最好 | 对npm生态完全兼容,大型项目中表现更好 | 兼容npm特性,额外增加功能 |
| 离线支持 | 不完全支持 | 完全支持 | 支持 |
| 特色功能 | npx执行一次性命令 | 针对monorepo设计,多包管理和tree shaking能力 | 严格版本管理、改进冲突策略,也支持monorepo |
| 适用场景 | 大部分项目 | 优化磁盘空间和性能的大型项目 | 适合高性能和保证一致性的项目 |
缺点
- 路径过长问题:npm
- 安装速度慢:npm
- 磁盘空间浪费:npm、yarn
- 使用限制:pnpm(node版本在18以上才可以使用)