pnpm

Posted 消逝的绵羔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pnpm相关的知识,希望对你有一定的参考价值。

当使用 npm 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被 存放在一个统一的位置,因此:

  1. 如果你对同一依赖包需要使用不同的版本,则仅有 版本之间不同的文件会被存储起来。例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则 pnpm update 只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。
  2. 所有文件都保存在硬盘上的统一的位置。当安装软件包时, 其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。这让你可以在项目之间方便地共享相同版本的 依赖包。

最终结果就是以项目和依赖包的比例来看,你节省了大量的硬盘空间, 并且安装速度也大大提高了!

 

学习资料

https://www.pnpm.cn/

切换到 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的主要内容,如果未能解决你的问题,请参考以下文章

切换到 pnpm 时可以删除 package-lock.json 吗?

pnpm

pnpm 的包管理器替代品都有哪些?

为什么我们从Yarn切换到pnpm

pnpm,npm 与 yarn 后出现新一代好用的管理器

为什么 Vue 源码以及生态仓库要迁移 pnpm?