常见问题
如果包存储在全局存储中,为什么我的 node_modules
文件夹还会占用磁盘空间?
pnpm 从全局存储创建硬链接到项目的 node_modules
文件夹。硬链接指向磁盘上原始文件所在的相同位置。例如,如果你的项目中有一个依赖 foo
占用了 1MB 空间,那么它在项目的 node_modules
文件夹中看起来会占用 1MB 空间,在全局存储中也占用相同的空间。但是,这 1MB 实际上是磁盘上的同一块空间,只是从两个不同的位置进行访问。所以 foo
总共只占用 1MB,而不是 2MB。
更多相关内容:
它 能在 Windows 上运行吗?
简短回答:可以。 详细回答:在 Windows 上使用符号链接确实比较麻烦,但是 pnpm 有解决方案。对于 Windows,我们使用联接点来代替。
但是嵌套的 node_modules
方式不是与 Windows 不兼容吗?
npm 的早期版本因为嵌套所有 node_modules
而出现问题(参见[这个问题])。然而,pnpm 不会创建深层文件夹,它以扁平方式存储所有包,并使用符号链接创建依赖树结构。
循环符号链接会怎样?
虽然 pnpm 使用链接将依赖项放入 node_modules
文件夹,但由于父包与其依赖项被放置在同一个 node_modules
文件夹中,所以避免了循环符号链接。因此 foo
的依赖项不在 foo/node_modules
中,而是与 foo
一起存在于 node_modules
中。