pnpm
Posted 消逝的绵羔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pnpm相关的知识,希望对你有一定的参考价值。
当使用 npm 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被 存放在一个统一的位置,因此:
- 如果你对同一依赖包需要使用不同的版本,则仅有 版本之间不同的文件会被存储起来。例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则
pnpm update
只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。 - 所有文件都保存在硬盘上的统一的位置。当安装软件包时, 其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。这让你可以在项目之间方便地共享相同版本的 依赖包。
最终结果就是以项目和依赖包的比例来看,你节省了大量的硬盘空间, 并且安装速度也大大提高了!
学习资料
切换到 pnpm 时可以删除 package-lock.json 吗?
【中文标题】切换到 pnpm 时可以删除 package-lock.json 吗?【英文标题】:Can I delete package-lock.json when switching to pnpm? 【发布时间】:2020-01-11 06:41:02 【问题描述】:我正在从npm
切换到pnpm
,它有一组我更喜欢的不同功能。
前者使用package-lock.json
锁定确切的包版本,后者使用pnpm-lock.yaml
。
根据docs,pnpm
忽略了package-lock.json
,这似乎变得多余了。因此,当使用pnpm
更新软件包时,这个文件根本不会被处理,很快就会过时。
我可以安全地删除package-lock.json
还是会遇到一些问题?从我的项目中删除这个文件会有什么缺点吗?
我使用 npm
只是为了获取我的项目所需的工具和包(即 Gulp),而不是发布包到 https://www.npmjs.com/
【问题讨论】:
【参考方案1】:如果你使用 pnpm,你可以删除 package-lock.json
(如果你从 Yarn 切换,你可以删除 yarn.lock
)。如果您需要保留旧锁文件中的一些依赖项,您可以运行pnpm import
,pnpm 将使用来自package-lock.json
的信息生成锁文件。
pnpm 将创建一个自己的锁定文件。 pnpm 的锁文件名为pnpm-lock.yaml
。您应该将此文件提交到存储库。
如果您有 CI 服务器,则还必须在 CI 服务器上使用 pnpm 来安装依赖项。 Here are some instructions how to do that.
【讨论】:
以上是关于pnpm的主要内容,如果未能解决你的问题,请参考以下文章