/ / Distribuzione del modulo elettronico precostruito: node.js, electron, node-pre-gyp

Distribuzione del modulo elettronico precostruito: node.js, elettrone, nodo-pre-gyp

Mi piacerebbe distribuire binari precompilati per un add-on Node.js nativo per Electron.

Presumibilmente il Nodo ABI cambia tra i dossi principali quindi mi chiedo se è in esecuzione node-pre-gyp con la versione corretta di Node.js lo taglierò o devo correre electron-rebuild e pubblicare i binari ricostruiti?

Un piccolo esperimento ha mostrato che node-pre-gyp non poteva trovare il binario compilato quando è in esecuzione in un ambiente di elettroni. electron-rebuild fa qualcosa per aggiustarlo.

risposte:

1 per risposta № 1

Puoi usare prebuild per creare binari precompilati per l'elettrone. Lo usiamo per leveldown.

https://github.com/prebuild/prebuild


1 per risposta № 2

Ho guardato attraverso le fonti di electron-builder e ha scoperto che funziona semplicemente install sul pacchetto.

Quindi avere il seguente hook di installazione è sufficiente:

node-pre-gyp install --fallback-to-build

Io non uso electron-rebuild direttamente dal momento che produco i binari giusti in primo luogo, ma corro electron-builder install-app-deps che probabilmente fa simili.

Non vedo alcun motivo per cui preoccuparsi prebuild e prebuild-install a questo punto. Sono altre due dipendenze che proteggono cosa node-pre-gyp e node-gyp entrambi già implementano.

Ho modificato il mio script per travis per eseguire parallelamente i build per node ed electron:

# build for nodejs
- npm install --build-from-source

# build for electron
- npm install --build-from-source --runtime=electron --target=$ELECTRON_VERSION --dist-url=https://atom.io/download/atom-shell

La fase di confezionamento deve essere eseguita due volte con le stesse bandiere, vale a dire:

- if [[ "${TRAVIS_TAG}" != "" ]]; then npm run package --verbose; fi
- if [[ "${TRAVIS_TAG}" != "" ]]; then npm run package --runtime=electron --target=$ELECTRON_VERSION --verbose; fi

Sia Travis che Appveyor supportano i caricamenti su Github Releases o S3, quindi ancora nessun guadagno dall'uso prebuild o node-pre-gyp-github, esempio per Travis:

deploy:
provider: releases
api_key:
secure: ENCRYPTED_KEY
file_glob: true
file: build/stage/$PACKAGE_VERSION/*.tar.gz
skip_cleanup: true
on:
tags: true