|
Mit nexe
und pkg
kann man sehr einfach Node.js-basierte Anwendungen als ausführbare Anwendungen packen und somit einfach verteilen. Anwender müssen dafür dann nicht mehr Node.js oder npm / Yarn installieren, da dies bereits in der generierten Datei mitgeliefert wird.
Anhand des folgenden Beispiels von meinem nanoshuffle
Projekt zeige ich kurz, wie das funktioniert.
package.json
{
"name": "nanoshuffle",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
index.js
const pkg = require('./package.json')
console.log(`${pkg.name} ${pkg.version}`)
console.log(
process.argv.splice(3)
.map(a => [Math.random(),a])
.sort((a,b) => a[0]-b[0])
.map(a => a[1])
.slice(0,process.argv[2])
.map((a,i) => `${i+1}: ${a}`)
.join("\n")
)
nexe
installieren
nexe
wird per yarn global add nexe
oder npm i -g nexe
installiert und dann auf der Konsole z.B. mit nexe index.js
ausgeführt.
Der erste Parameter nach nexe
ist der Einstiegspunkt der Anwendung (im Grunde unser main
-Eintrag in package.json
).
Per -o name
können wir einen anderen Dateinamen für die generierte Binärdatei vergeben. Denn standardmäßig wird der aktuelle Ordnername verwendet.
Wenn man noch die zu verwendende und gepackte Node.js-Version festlegen möchte, kann man dies mit -t
machen.
Die direkt verfügbaren Versionen kann man unter https://github.com/nexe/nexe/releases bei dem entsprechenden Release sehen (aktuell wäre es für Nexe 3.1.0 die Liste bei dem Release für 3.0.0).
Wenn man eine andere Version nutzen möchte, muss man diese mit --build
als weiteres Argument entsprechend kompilieren.
Der gesamte Befehl kann dann so aussehen:
nexe index.js -o nanoshuffle
nexe index.js -o nanoshuffle -t 4.8.4
Bei pkg
funktioniert das analog ähnlich:
pkg index.js -o nanoshuffle
pkg index.js -o nanoshuffle -t node4
Binärdateien für Linux, macOS und Windows
Darüber können auch direkt die Binärdateien für Linux, macOS und Windows generiert werden.
Für Windows wäre das zum Beispiel:
nexe index.js -o nanoshuffle -t windows
pkg index.js -o nanoshuffle -t windows
nexe index.js -o nanoshuffle -t windows-4.8.4
pkg index.js -o nanoshuffle -t node4-windows
Beide Lösungen bieten noch viel mehr Optionen und sind hilfreich um ganze Anwendungen damit zu packen und ohne Node.js-Umgebung auszuführen.
Ihr könnt darüber auch zum Beispiel per CI jeweils die nötigen Binärdateien generieren wie ich es bei https://github.com/DanielRuf/nexe-builder gemacht habe.