corepack管理包管理器;nvm管理node版本;nrm管理npm源地址

corepack

corepack 管理"包管理器",包括 yarnpnpm 。corepack 并不能管理 npm

corepack 是 nodejs 提供的功能,安装 nodejs 时 corepack 就一起安装了。它还是实验性功能,默认是关闭的,具体介绍看官方文档

注:下述说到 pnpm 的内容也适用于 yarn 。只提 pnpm 是为了方便叙述。

使用 corepack

先卸载 pnpm

使用 corepack 前,先卸载你自行安装的 pnpm,因为它们可能会影响 corepack。

卸载后使用 which pnpmpnpm -v 等命令确认是否成功

启用、禁用 corepack

启用: corepack enable ,禁用:corepack disable

为了查看启用的效果,用 which 找到 nodejs 所在目录(which是 linux 命令。在 windows cmd 中不能直接用,我是在 git bash 中执行的):

打开 nodejs 所在目录,包括以下内容:

开启 corepack:corepack enable。目录下多出了 pnpm 和 yarn 的相关文件(下图红框):

使用 which 命令查看。已经可以使用 pnpm 和 yarn 了,并且它们都来自 nodejs 目录:

禁用:corepack disable。目录下 pnpm 和 yarn 的相关文件(红框里的)又消失了。此时 pnpm 和 yarn 都不可用了。

corepack 控制的 pnpm 版本

通过 corepack 初次使用 pnpm 时,corepack 会从网络获取 pnpm 最新版本并缓存到本地。之后再使用 pnpm 时会直接用缓存的版本。

想要修改缓存的版本的话, 执行 corepack install -g pnpm@<version>

corepack 被禁用后重新启用,并不看作前面所说的"初次使用"。即:假设你之前通过 corepack 安装了 pnpm@4,corepack disable 后再 corepack enable ,使用 pnpm 还会使用 pnpm@4版本


使用 corepack 规定项目使用 pnpm 并锁定版本

多人开发项目时最好统一开发环境与工具。node 版本不同可能会导致项目无法启动、构建,或者 install package 时失败。pnpm 版本不同可能导致 pnpm-lock.yaml 不一致。

利用 corepack 可以规定项目使用的 pnpm 版本。在项目根目录下执行 corepack use pnpm@<version>

规定项目使用 pnpm,且版本为 4.0.0:

package.json 会自动添加 packageManager 项:

再使用 yarn 安装包的话,会阻止并报错:

但是使用 npm 安装包还是能成功,因为正如文章最开头说的: corepack 仅管理 yarnpnpm不能管理 npm


nvm

管理node版本。windows 系统用 nvm-windows


nrm

管理 npm registry 地址