首页 > 其他分享 >使用 PNPM 将 React App 中的磁盘空间减少 60%

使用 PNPM 将 React App 中的磁盘空间减少 60%

时间:2022-09-22 11:57:35浏览次数:88  
标签:React 依赖 App pnpm 60% 磁盘空间 https PNPM

使用 PNPM 将 React App 中的磁盘空间减少 60%

在 React 应用程序中使用 PNPM 减少磁盘空间的教程。

Photo by 诺德伍德主题 on 不飞溅

您是否正在处理具有共同依赖项的多个 React 项目?如果是这样,那么这篇文章适合你。

在做多个项目或微前端应用时,你需要在每个项目上安装相同的依赖,例如,如果你在做 5 个基于 React 的项目,所有项目具有相同的依赖版本,并且每个项目都有节点模块占用大量磁盘空间的文件夹。

我们可能会从中得到一些问题。

  1. 为什么多次安装相同的依赖项而不重用它?
  2. 处理具有相同依赖项的多个项目时如何节省磁盘空间?
  3. 如何加快依赖安装?

在本文中,我们可以看到如何使用 pnpm 解决这个问题。

什么是 PNPM?

即插即用 代表高性能 npm。这是基于 NodeJS 的项目的包管理器。它专注于速度和处理磁盘空间的有效方法。它是 npmyarn 的替代品。

强调

  1. 快速地
  2. 高效的
  3. 支持 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

基准

基准由 pnpm 官方文档 使用这个 包.json .

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 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38668/43542211

标签:React,依赖,App,pnpm,60%,磁盘空间,https,PNPM
From: https://www.cnblogs.com/amboke/p/16718730.html

相关文章

  • React + Eartho 与 3 个简单的步骤集成
    React+Eartho与3个简单的步骤集成如果您已经关注并访问了您的第一个地球和React经验,那么我相信你会感觉很棒。它一次为开发人员提供了许多好处。如果你有地球......
  • React 组件和更好的方法
    React组件和更好的方法Credits-eduba.com想了解react.js如何帮助创建令人惊叹的用户界面?它是如何让我们如此轻松高效地执行多项任务的?在本文中,我将介绍其中一个Re......
  • vue3中watch监听ref reactive响应式数据写法及注意点
    watch函数与vue2中watch配置一致两个小坑监视reactive定义的响应式数据时,oldvalue无法正确获取,强制开启了深度监视(deep配置失败)监视reactive定义的响应式数据中某个......
  • 写给自己的react面试题总结
    解释React中render()的目的。每个React组件强制要求必须有一个render()。它返回一个React元素,是原生DOM组件的表示。如果需要渲染多个HTML元素,则必须将它们组......
  • AppStore审核被拒:other-other,过审核、不过审的经历
     最新版Other问题,请查看我最近的一片文章我主要开发小型应用,周期较短,提审较频,使用帐号也多,正常申请的三方购买的都有使用。提审时经常会遇到这样那样的问题,单独说ot......
  • React 面向组件编程 之 类式组件、组件实例的三大核心属性
    类式组件importReact,{Component}from"react";exportdefaultclassAppextendsComponent{render(){return<h2>我是类式组件</h2>}}......
  • 【笔记】P1606 [USACO07FEB]Lilypad Pond G 及相关
    题目传送门建图首先,根据题目,可以判断出这是一道最短路计数问题。但是要跑最短路,首先要用他给的信息建图,这是非常关键的一步。根据题意,我们可以想出以下建图规则:起点......
  • Oracle 23c? What happened 20c&22c
    AsyouknowOraclehasbeenchanedreleasename.InthispostwetalkaboutOracleRealeases.BeforewestartletuseseecurrentOracleDatabaseRealeasesand......
  • uni-app 获取图片验证码
      <image:src="imgVerificationCode"@click="getVerificationCode"class="imageCode"></image>arrayBufferToBase64(buffer){ varbinary=''; ......
  • Uni-app Vue 中CSS问题整理合集
    一、父组件设置子组件的样式:一般情况下子组件内部负责各自样式。不过在很多场合里,我们也会要求父组件来修改子组件默认样式。父组件可以通过传入class样式修改有限的样式......