常见问题
如果包存储在全局存储中,为什么我的 node_modules
使用了磁盘空间?
pnpm 创建从全局存储到项目下 node_modules
文件夹的 硬链接。 硬链接指向磁盘上原始文件所在的同一位置。 因此,例如,如果您的项目中 foo
并且它占用 1MB 的空间,那么看起来它在项目的 node_modules
文件夹中占用了与全局存储相同的 1MB 的空间。 但是,该 1MB 是磁盘上两个不同位置的相同空间 。 所以 foo
总共占用 1MB,而不是 2MB。
获取有关此主题的更多信息:
能用于Windows吗?
短回答:当然 长答案:在 Windows 上使用符号链接至少可以说是有问题的,但是,pnpm 有一个解决方法。 对于 Windows,我们用junctions替代。
但是嵌套的 node_modules
组织方式与 Windows 兼容吗?
npm 的早期版本由于嵌套了所有 node_modules
(参见 这个 issue). 但是,pnpm 不会创建深层文件夹,它使用符号链接来创建依赖关系树结构。
循环 symlinks 呢?
尽管 pnpm 使用链接将依赖项放入 node_modules
文件夹,循环的符号链接已经被避免了,因为父包放置在其依赖项所在 node_modules
文件夹中。 所以 foo
的依赖项不在 foo/node_modules
中,foo
其实和它 依赖项一起在 node_modules
中。