pnpm 和 npm 都是用于管理 Node.js 项目中依赖包的工具,但它们有一些关键的不同点。
npm(Node Package Manager)
- 安装和管理依赖: npm 是 Node.js 官方的包管理工具,用于安装和管理项目的依赖包。
- 工作原理: 每次安装依赖时,npm 会在 node_modules 文件夹中创建一个完整的依赖树,可能导致依赖重复,占用更多磁盘空间。
- 性能: 在处理大量依赖时,npm 的安装速度可能较慢,特别是在大项目中。
pnpm
- 全名: pnpm 是 “Performant npm” 的缩写。
- 工作原理: pnpm 通过使用全局的缓存和符号链接来高效管理依赖。它会将依赖包存储在全局的缓存目录中,并通过符号链接将这些依赖链接到每个项目的 node_modules 文件夹中。这样可以避免重复下载和存储相同的依赖,节省磁盘空间。
- 性能: 由于采用了这种缓存和符号链接的机制,pnpm 的安装速度通常比 npm 更快,特别是在处理大量依赖时。
- 隔离性: pnpm 还提供了更好的依赖隔离性,确保不同项目的依赖不会互相干扰。
pnpm 主要优势
- 节省空间:由于使用了符号链接,pnpm 能显著减少磁盘空间的使用。
- 更快的安装速度:缓存机制使得重复的安装操作变得更快。
- 更好的依赖隔离:pnpm 确保了项目依赖的隔离性,避免了潜在的依赖冲突问题。
使用
要使用 pnpm,你可以先通过 npm 安装它:
npm install -g pnpm
然后在项目中使用 pnpm 来安装依赖:
pnpm install
总体来说,pnpm 是一个高效的包管理工具,特别适合需要处理大量依赖或需要节省磁盘空间的项目。
更改 pnpm 的源
pnpm 默认使用的是 npm 官方的注册表。不过,和 npm 一样,你也可以根据需要更改 pnpm 的源。例如,如果你在中国大陆使用 pnpm,可能会因为网络原因需要使用更快的镜像源。
1. 查看当前源:
pnpm config get registry
2. 设置新的源:
例如,要将源设置为淘宝的 npm 镜像,你可以执行以下命令:
pnpm config set registry https://registry.npmmirror.com/
常见的镜像源
淘宝镜像(目前由 npmmirror 维护):https://registry.npmmirror.com/
cnpm(npm 的一个镜像,提供中国大陆的服务):https://r.cnpmjs.org/
npm 镜像(由中国科学技术大学提供):https://registry.npmjs.org/
npm.taobao.org 镜像(不再维护,建议使用 npmmirror):https://registry.npm.taobao.org/