阅读列表

如果你最近没事干,可以把你Angular项目的npm切换为pnpm

本文介绍了在Angular项目使用pnpm代替默认的npm包管理器,以及切换现有项目的包管理器到pnpm的方法。

Oceanic

发表于 2025年08月16日

加入到阅读列表分享本文到 X

你一定看过上面这玩意吧,我觉得它画的还是有些保守。

我还记得自己第一次执行ng new MyFirstAngularApp 的时候,我很奇怪为什么新建一个项目要这么久,打开项目一看才发现有一个这么大的node_modules文件夹。当我创建第二个练习项目的时候,发现Angular的CLI又给新项目生成了一个一模一样的node_modules文件夹,这令我非常不爽且困惑:为什么系统不使用一个统一的、全局的node_modules呢?

通常情况下一个node_modules文件夹的大小至少有200M。换句话说,只要你随随便便生成几个测试用的projects,你的硬盘就多了几个G的文件,最让人受不了的是你清楚的知道这些文件都是重复的。这对从软盘年代过惯了苦日子的我来说实在太难受了。更让人苦恼的是,当我使用NAS在我的台式机和笔记本之间同步文件的时候,这个又大又复杂的node_modules目录总是让NAS的同步程序显得格外吃力, 有一次我着急带着笔记本出门,但是同步程序却显示还剩余一万多个文件。

所以是时候请出pnpm了。

如果你还不知道的话,pnpm是performant npm的缩写,嗯,我觉得这个名字比那副漫画还具有攻击性。

pnpm会在你的电脑上创建一个全局的node_modules,然后通过硬链接(Hard Link)的方式把需要的依赖提供给项目。这样做的好处非常明显:

  1. 大大节省了磁盘空间
  2. 超快的依赖安装
  3. 避免幽灵依赖(Phantom Dependencies)问题(库A依赖库B,Angular可以直接引用库B,当库A不再依赖库B的时候,Angular就会莫名其妙的找不到库B )

下面就让我们轻松切换到pnpm。

首先安装全局node_modules:

npm install -g pnpm

这是一篇需要付费阅读的文章,请完成支付以阅读完整的文章