一 pnpm 介绍
pnpm
(Package Manager)是一个快速、节省磁盘空间的 JavaScript 包管理器,它是 Node.js 生态系统中 npm
的一个替代品。pnpm
解决了传统包管理工具在处理依赖时的一些痛点,特别是关于存储空间使用和依赖地狱的问题。以下是 pnpm
的几个核心特点和优势:
-
高效的存储机制:
pnpm
引入了“内容寻址存储”(Content-Addressable Storage, CAS)的概念,它只在本地存储每个依赖的一个实例。这意味着,即使多个项目或同一项目中的不同依赖共享同一个依赖包,它们也不会被重复下载和存储。这极大地节省了磁盘空间,并加快了安装速度。 -
硬链接和符号链接:通过使用硬链接或符号链接(在不支持硬链接的平台上),
pnpm
将全局存储中的依赖包链接到每个项目的node_modules
目录中,而不是复制文件。这种方法保留了每个项目独立的依赖环境,同时避免了冗余。 -
避免依赖地狱:
pnpm
确保所有依赖包的精确版本被安装,通过它的“严格版本控制”,有助于预防因依赖版本不一致导致的“节点_modules地狱”问题,即不同模块间依赖冲突的情况。 -
与 npm 的兼容性:尽管
pnpm
提供了自己独特的功能和改进,但它设计上尽可能与npm
兼容,这意味着你可以无缝地从npm
迁移到pnpm
,而不需要对package.json
或工作流程做重大改动。 -
性能提升:由于减少了重复下载和存储的需求,
pnpm
的安装速度通常比npm
更快,尤其是在首次安装之后的后续安装,因为大部分依赖已经被本地存储。 -
跨平台支持:
pnpm
支持 Windows、macOS 和 Linux,适用于各种开发环境。
综上所述,pnpm
通过其创新的依赖管理策略,提供了更快、更高效、更节省空间的包管理解决方案,马上放弃npm
赶紧用pnpm吧
二 npm 升级用 pnpm
首次使用未安装pnpm时我们要安装安装pnpm
npm install -g pnpm
如果之前的老项目用npm安装的,请把node_modules删除。
用pnpm重新安装:
pnpm install
安装依赖,如下图:
安装完成,运行,如下图:
pnpm操作与原来的npm操作都一样,这点非常好,完全不用学拿来就用。