electron readdirsync 读取系统根路径_从源码解析Electron的安装为什么这么慢

本文探讨了Electron安装为何缓慢,通过源码分析发现,主要原因是下载Electron二进制基座的过程。详细讲解了npm安装过程、下载细节,包括远端URL的确定和本地缓存机制。通过配置ELECTRON_MIRROR环境变量可以加快下载速度,同时介绍了本地缓存的查找路径。
摘要由CSDN通过智能技术生成

前言

Electron作为一款跨平台的桌面应用端解决方案已经风靡全球。作为开发者,我们几乎不用关心与操作系统的交互,直接通过Web前端技术与Electron提供的API就可以完成桌面应用端的开发。

然而,为什么国内使用Electron的踩坑文章数不胜数,主要原因是Electron为了支持跨平台,为不同的操作系统平台进行了适配,将chromium内核与node集成到了一起,屏蔽了底层操作系统的细节,所以在不同的平台上有着不同的二进制基座。在开发的过程中,我们必须要下载对应的平台的基座,才能正常开发。也就是说,我们npm install electron -D的时候,一定是下载了Electron的二进制基座的。那么这个下载的过程在哪里?为什么速度这么慢呢?本文将通过Electron的安装源码一一说明。

安装Electron

在安装之前,我们先模拟一下没有配置任何关于Electron二进制镜像的npm配置文件,在~/.npmrc里面,只有一些默认的配置:

# ~/.npmrc文件
registry=https://registry.npm.taobao.org/
prefix=D:Programsnodejsglobal_modules
cache=D:Programsnodejscache_modules
python=D:ProgramsPython39python.exe

然后,创建一个名为electron-install-example的文件夹作为本此测试的Demo项目目录,并在进入该目录后执行npm init初始化node项目。

最后,使用命令行安装Electron:npm install electron -D。在短暂的npm包安装后,我们会发现会卡在一个地方:

d3c4cde8d83d42304277ff06716f0a73.png

这时候,很多开发者就会开始在网络上搜索:'安装Electron卡住',并且也很容易得到解决方案:

~/.npmrc文件中,单独设置Electron的镜像 electron_mirror="https://npm.taobao.org/mirrors/electron/"

于是我们按照搜来的解决方案重新配置我们的.npmrc文件:

# ~/.npmrc文件
registry=https://registry.npm.taobao.org/
prefix=D:Programsnodejsglobal_modules
cache=D:Programsnodejscache_modules
python=D:ProgramsPython39python.exe
# 单独设置Electron的镜像
electron_mirror="https://npm.taobao.org/mirrors/electron/"

设置完成后,重新进行npm install,发现能够很快完成下载并继续开发。通过本文,我们深入细节,看看为什么Electron设置了单独的镜像后,就能够正常且快速完成下载安装。

深入下载细节

进入项目根目录下/node_modules/electron/(后续除特殊情况外,提到的目录路径都是统一相对于项目根目录)目录中,查看package.json文件中的scripts脚本节点:

0b69242f9ab8278d3019e527e0342ca1.png

了解npm的朋友们知道,postinstall中的脚本会在npm包完成安装后执行。

也就是说,npm install -D electron完成以后,会在node_modules/electron目录中立刻执行node install.js。所以,我们进一步查看install.js文件,看看它到底执行了什么。核心代码如下:

9f17f01b94679d6a46ddcdac42ef04e8.png

代码特别容易理解:在没有缓存文件的时候,会使用@electron/get提供的downloadArtifact

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值