
你一定看过上面这玩意吧,我觉得它画的还是有些保守。
我还记得自己第一次执行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)的方式把需要的依赖提供给项目。这样做的好处非常明显:
- 大大节省了磁盘空间
- 超快的依赖安装
- 避免幽灵依赖(Phantom Dependencies)问题(库A依赖库B,Angular可以直接引用库B,当库A不再依赖库B的时候,Angular就会莫名其妙的找不到库B )
下面就让我们轻松切换到pnpm。
首先安装全局node_modules:
npm install -g pnpm