![8e0dda642fd93fec8a0de25dfdb018ae.png](https://i-blog.csdnimg.cn/blog_migrate/327bf76791cb53c40fc43cde71a866ec.jpeg)
作者:前端之巅
转发链接:https://mp.weixin.qq.com/s/PBZn1Pu7wzEt8XW4nu47CA
1.1 安装 Electron 依赖包
开发者往往通过 npm install(或 yarn add)指令完成为 Node.js 工程安装依赖包的工作,安装 Electron 也不例外,下面是 npm 和 yarn 的安装 Electron 依赖包的指令:
npm install electron --save-devyarn add electron --dev
官方推荐我们把 electron 依赖包安装为开发依赖(devDependencies),这实际上是为了将来制作应用程序安装包时,避免把 electron 包和其可执行文件包装两次。这部分内容后文我们会详细讲解。
如果你希望观察 npm install 指令的具体执行细节,可以为其添加两个参数,如下所示:
npm install electron --save-dev --timing=true --loglevel=verbose
通过以上指令安装 Electron 依赖包,你会观察到整个安装过程的执行情况日志,这里我截取几个重要的日志分析一下。
npm http fetch GET 200 https://registry.npm.taobao.org/electron 125ms
这是 npm 通过 http 协议获取 electron 包的注册信息的日志,请求上述地址(我用的是 npm 淘宝源)将得到一个 json 响应,json 中包含了 electron 的所有版本的版本信息,如果安装时我们没有为 electron 指定版本号,将安装最新的版本。
> electron@9.2.0 postinstall D:ElectronDeepDivecapture1installode_moduleselectron> node install.js
这是 Electron 依赖包安装完成后,npm 执行其依赖包内定义的 postinstall 钩子的日志。npm 包管理文档为 npm 包定义了一系列的钩子,postinstall 钩子会在 npm 包安装完成后被执行,除了 postinstall 钩子之外,常用的还有如下这些钩子:
- preinstall 包安装之前执行;
- postuninstall 包被卸载之后执行;
- preuninstall 包被卸载之前执行;
- poststart 当 npm start 执行后触发;
- poststop 当 npm stop 执行后触发;
- posttest 当 npm test 执行后触发;
详细的文档请参阅:
https://docs.npmjs.com/misc/scripts
postinstall 钩子定义在 Electron 包内的 package.json 中,代码如下:
"scripts": {"postinstall": "node install.js"}
install.js 程序是 Electron 包内的一个重要程序,用于下载 Electron 的可执行文件及相关资源,下一小节我们将讲解 Electron 可执行文件的下载过程。
1.2 下载 Electron 的二进制文件
在 install.js 中,程序获取了当前操作系统的版本,并通过如下代码下载 Electron 的二进制文件与相应的资源:
downloadArtifact({version,artifactName: 'electron',force: process.env.force_no_cache === 'true',cacheRoot: process.env.electron_config_cache,platform: process.env.npm_config_pl