uuf6429 / electron-installer
一个Composer包,可以将Electron二进制文件(Linux、Windows、Mac)安装到您的项目的 `/bin` 目录。
Requires
- php: ^7.2 || ^8.0
- ext-bz2: *
- ext-json: *
- ext-openssl: *
Requires (Dev)
- composer/composer: ^1 || ^2
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-08-29 04:31:18 UTC
README
一个Composer包,可以将Electron二进制文件(Linux、Windows、Mac)安装到您的项目的 /bin
目录。
目录
- 安装
- 如何要求特定版本的Electron?
- 这个是如何内部工作的?
- 如何通过使用ElectronInstaller\ElectronBinary轻松访问二进制文件?
- 如何通过覆盖平台要求为另一个平台打包?
- 如何使用镜像或自定义CDN URL进行下载?
安装
要将Electron作为本地、项目特定的依赖项安装到您的项目中,只需将 uuf6429/electron-installer
依赖项添加到项目的 composer.json
文件中。
{ "require": { "uuf6429/electron-installer": "^2" }, "scripts": { "post-install-cmd": [ "ElectronInstaller\\Installer::installElectron" ], "post-update-cmd": [ "ElectronInstaller\\Installer::installElectron" ] } }
对于开发依赖项,将 require
改为 require-dev
。
默认下载来源是:https://github.com/electron/electron/releases/ 您可以通过设置自定义CDN URL来更改它,这在“从镜像下载”部分中进行了说明。
通过设置Composer配置指令 bin-dir
,供应商二进制文件 将安装到定义的文件夹中。 重要! Composer默认将二进制文件安装到 vendor\bin
。
“scripts”部分是必要的,因为目前Composer不会将事件传递给依赖项的处理脚本。如果您省略它,您可能需要手动执行安装程序。
现在,假设已按要求设置“scripts”部分,Electron二进制文件将安装到 /bin
文件夹,并随着项目的Composer依赖项一起更新。
如何要求特定版本的Electron?
环境变量和服务器变量 ELECTRON_VERSION
允许您在打包时指定版本要求。
您还可以在 composer.json
的 extra
部分中设置 electron-version
。
{ "extra": { "uuf6429/electron-installer": { "electron-version": "16.0.0" } } }
版本搜索顺序是 $_ENV
、$_SERVER
、composer.json
(extra部分),默认回退到GitHub上的最新版本。
这个是如何内部工作的?
获取Electron安装程序
在您的 composer.json
中,您需要“electron-installer”包。该包由Composer获取并存储在 ./vendor/uuf6429/electron-installer
中。它只包含一个文件,即 ElectronInstaller\\Installer
。
针对特定平台的Electron下载
ElectronInstaller\\Installer
作为“post-install-cmd”运行。这就是为什么您需要在“composer.json”中包含“scripts”部分。安装程序创建一个新的内存中的composer包“electron”,检测您的操作系统,并将正确的Electron版本下载到 ./vendor/uuf6429/electron
文件夹。所有Electron文件都驻留在那里。
安装到 /bin
文件夹
二进制文件从 ./vendor/uuf6429/electron
链接到您配置的composer bin-dir
文件夹。
生成ElectronBinary
安装程序生成一个PHP文件 ElectronInstaller/ElectronBinary
并插入二进制文件的路径。
ElectronBinary
为了访问有关二进制文件的信息,安装过程中会自动创建类 ElectronBinary
。
该类定义了以下常量
BIN
是Electron二进制文件的完整路径,例如/your_project/bin/electron
DIR
是二进制文件的文件夹,例如/your_project/bin
VERSION
是安装过程中使用的版本,例如16.1.2
用法
<?php use ElectronInstaller\ElectronBinary; $bin = ElectronBinary::BIN; $dir = ElectronBinary::DIR; $version = ElectronBinary::VERSION;
覆盖平台要求
环境变量和服务器变量 ELECTRON_PLATFORM
和 ELECTRON_ARCHITECTURE
允许您在打包时覆盖平台要求。这解耦了打包系统与目标系统。它允许在 Linux 上为 MacOSX 打包或在 Windows 上为 Linux 打包。
可能的值如下:
ELECTRON_PLATFORM
的值是:darwin
、win32
、linux
。ELECTRON_ARCHITECTURE
的值是:ia32
或x64
。
从镜像下载
您可以通过以下位置之一设置它来覆盖 Electron 二进制文件的默认下载位置
- 环境变量
ELECTRON_CDNURL
- 服务器变量
ELECTRON_CDNURL
- 在您的
composer.json
中使用$['extra']['uuf6429/electron-installer']['cdnurl']
{ "extra": { "uuf6429/electron-installer": { "cdnurl": "https://github.com/company/electron/releases/download/v16.0.0/" } } }
默认下载位置
默认下载位置是 GitHub: https://github.com/electron/electron/releases/
。您无需显式设置它。当未设置 ELECTRON_CDNURL
时,将使用它。
在 404 时自动降低版本并重试下载
如果下载存档失败,返回 HttpStatusCode 404(资源未找到),下载器将自动将版本降低到下一个可用版本并重试。
关于此行为的一些注意事项
- 重试次数由
getElectronVersions()
中 Electron 版本的数量决定。 - 由于您只能请求一个特定的版本,如果所有其他版本由于某些原因失败,则可能会回退到一个非常旧的版本。
- 在下一个 composer 更新/安装过程中,它将再次经过此过程。因此,拥有大量损坏的版本可能会减慢安装过程。