Electron package guidelines (Português)
32-bit – CLR – CMake – Cross – DKMS – Eclipse – Electron – Fonte – Free Pascal – GNOME – Go – Haskell – Java – KDE – Kernel – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – Web – Wine
Este documento abrange padrões e diretrizes para escrever PKGBUILDs para Electron.
Usando o electron do sistema
Arch Linux fornece o pacote electron e pacotes versionados electron* que podem ser usados para executar um aplicativo electron por meio de um wrapper de shellscript:
#!/bin/sh exec electron /caminho/para/nome_do_app/ "$@"
O diretório nome_do_app/
ou, alternativamente, um pacote de arquivo chamado nome_do_app.asar
, pode ser localizado em um aplicativo electro pré-compilado como a pasta resources/app/
(ou resources/app.asar
). Todo resto é apenas uma cópia de runtime do electron e pode ser removido no pacote resultante.
Construindo extensões compiladas com o electron do sistema
Alguns aplicativos de electron compilaram extensões nativas vinculadas ao runtime do electron e devem ser compiladas usando a versão correta de electron. Como o npm/yarn sempre será compilado com uma cópia pré-compilada privada de electron, aplique um patch na dependência de electron de package.json
para referenciar a mesma versão da dependência de electron do sistema. O sistema de compilação irá baixar a cópia pré-compilada que precisar, compilará as extensões nativas e empacotará tudo em uma distribuição final, mas isso pode ser removido durante a etapa package()
como de costume.
Alternativamente, você pode remover a dependência de electron do package.json
e definir as variáveis de ambiente corretas antes de executar o npm:
export npm_config_target=$(tail /usr/lib/electron/version) export npm_config_arch=x64 export npm_config_target_arch=x64 export npm_config_disturl=https://atom.io/download/electron export npm_config_runtime=electron export npm_config_build_from_source=true HOME="$srcdir/.electron-gyp" npm install
Configure HOME
para um caminho dentro do $srcdir
para que o processo de compilação não coloque nenhum arquivo em seu diretório real HOME
. Certifique-se de ajustar o caminho para todos os comandos adicionais que fazem uso do cache .electron-gyp
.
(mais detalhes aqui).
Usando electron-builder com electron do sistema
Muitos projetos usam o electron-builder para compilar e empacotar o arquivo JavaScript e os binários Electron. Por padrão, o electron-builder baixa toda a versão de electron definida no arquivo de gerenciamento de pacotes (por exemplo, package.json
). Isso pode não ser desejado se você quiser usar o electron do sistema e economizar a largura de banda, já que você vai jogar fora os binários de electron de qualquer maneira. O electron-builder fornece as configurações electronDist
e electronVersion
, para especificar um caminho personalizado de Electron e a versão para a qual o aplicativo é empacotado, respectivamente.
Encontre o arquivo de configuração do electron-builder (por exemplo, electron-builder.json
) e adicione as seguintes configurações:
-
electronDist
com/usr/lib/electron
para electron ou/usr/lib/electron2
para electron2AUR -
electronVersion
com o conteúdo de/usr/lib/electron/version
sem ov
no início
Pacotes que aplicam isso: rocketchat-desktopAUR ubports-installer-gitAUR
Configuração do electron-builder
Como alternativa, você pode usar a CLI para alterar/adicionar essas configurações da seguinte maneira:
./node_modules/.bin/electron-builder --linux --x64 --dir $dist -c.electronDist=$electronDist -c.electronVersion=$electronVer
Observe que você precisa especificar todas essas opções ou elas não funcionarão.
Pacotes que aplicam isso: deezloader-remix-gitAUR
Arquitetura
Veja PKGBUILD (Português)#arch.
Um pacote Electron que contém extensões nativas compiladas depende da arquitetura. Caso contrário, é mais provável que seja independente de arquitetura.
Se o pacote contiver uma cópia pré-compilada do electron, será sempre dependente da arquitetura.
Estrutura de diretórios
Se o pacote é dependente de arquitetura, instale o diretório resources/app/
em /usr/lib/nome_do_app/
. Do contrário, use /usr/share/nome_do_app/
.
Se o pacote contém uma cópia pré-compilada de electron, copie toda a distribuição final para /opt/nome_do_app
.