使用 PNPM 将 React App 中的磁盘空间减少 60%
使用 PNPM 将 React App 中的磁盘空间减少 60%
在 React 应用程序中使用 PNPM 减少磁盘空间的教程。
您是否正在处理具有共同依赖项的多个 React 项目?如果是这样,那么这篇文章适合你。
在做多个项目或微前端应用时,你需要在每个项目上安装相同的依赖,例如,如果你在做 5 个基于 React 的项目,所有项目具有相同的依赖版本,并且每个项目都有节点模块占用大量磁盘空间的文件夹。
我们可能会从中得到一些问题。
- 为什么多次安装相同的依赖项而不重用它?
- 处理具有相同依赖项的多个项目时如何节省磁盘空间?
- 如何加快依赖安装?
在本文中,我们可以看到如何使用 pnpm 解决这个问题。
什么是 PNPM?
即插即用 代表高性能 npm。这是基于 NodeJS 的项目的包管理器。它专注于速度和处理磁盘空间的有效方法。它是 npm
和 yarn
的替代品。
强调
- 快速地
- 高效的
- 支持 Monorepos
PNPM 的效率如何?
Pnpm 非常有效地处理磁盘内存。让我们看看如何。
pnpm 将依赖项保存在 全球商店 在您的机器上,在项目和依赖项之间创建硬链接。所以确切的 依赖关系 是 共享 项目之间,节省了大量空间。在 npm 中,它也会复制相同的依赖,并将它们保存在项目特定的节点模块中,这增加了存储空间。
PNPM 使用非平面目录
默认, 即插即用 在全局存储和项目节点模块之间创建符号链接。但是您可以看到节点模块占用了每个项目的磁盘空间。
这是因为 硬链接 , 硬链接指向原文件所在的同一个地方。但是对于一个版本,只有一份依赖关系的副本保存在内存中。参考下图:
pnpm file structure
让我们看一个实时示例
每个 React App 的共同依赖
“依赖”:{
"[ @测试](https://twitter.com/testing) -图书馆/是家“:”⁵.16.5“,
"[ @测试](https://twitter.com/testing) -图书馆/反应”:“¹³.3.0”,
"[ @测试](https://twitter.com/testing) -library/user-event": "¹³.5.0",
“反应”:“¹⁸.2.0”,
"react-dom": "¹⁸.2.0",
“反应脚本”:“5.0.1”,
“网络生命体征”:“².1.4”
}
使用 NPM 配置的项目
磁盘总大小: 1260 MB
使用 PNPM 配置的项目
注意:所有依赖项都将放置在全局存储中,而不是单个项目中。上表是为了区分。
磁盘总大小: 500 MB
公共依赖项放在全局存储中并由项目访问。根据上面的示例,常见的依赖项有 380MB .按照上面的例子,我们可以看到我们已经保存了 60% 的磁盘空间 以有效的方式使用pnpm
。
PNPM 更快
与其他依赖管理器相比,pnpm 更快,因为它在安装过程中没有阻塞阶段。每个依赖项都有自己的阶段,通过单独安装每个依赖项,下一个阶段会尽快开始。
pnpm dependency
基准
benchmarks
安装
使用 NPM
我们可以通过以下命令使用 npm 全局安装 pnpm:
npm 安装 -g pnpm
使用自制软件
我们可以通过以下命令使用自制软件进行安装:
冲泡安装 pnpm
作为独立脚本安装
使用卷曲
卷曲-fsSL[ https://get.pnpm.io/install.sh](https://get.pnpm.io/install.sh) |嘘——
使用 wget
wget -qO-[ https://get.pnpm.io/install.sh](https://get.pnpm.io/install.sh) |嘘——
使用 PNPM 创建 React App
我们可以使用以下命令来配置 React App:
pnpm create react-app my-pnpm-app
常用命令
pnpm 安装
-> 从 package.json 安装依赖项
pnpm 添加
-> 添加依赖
pnpm 运行
-> 运行 package.json 文件中的脚本
pnpm 测试
-> 在项目中运行测试
pnpm 初始化
-> 创建一个 package.json 文件
pnpm 发布
-> 将包发布到注册表
pnpm 开始
-> 在 package.json 中运行命令以启动应用程序。
结论
即插即用 比 npm 和 yarn 更快并且更有效地处理磁盘内存。在处理多个项目和微前端应用程序时,这为我们提供了大量的可用空间。将依赖项放在全局存储上并重用它会更有效,这是其他包管理器所忽略的。
感谢您的阅读。
更多内容在 ** 纯英语.io** .注册我们的 ** 免费每周通讯** .跟着我们 ** 推特** , ** 领英** , ** YouTube** , 和 ** 不和谐** .对增长黑客感兴趣?查看 ** 电路** .
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明