Ich habe eine Knoten-App, die ich geschrieben habe und die ich wie folgt ausführe:
node.exe app.js inputArg
Gibt es eine Möglichkeit, dies selbst in eine EXE-Datei zu packen? Also kann ich so etwas einfach machen?
App.exe inputArg
Ich habe eine Möglichkeit, dies mithilfe einer Batch-Datei vorzutäuschen, damit ich Folgendes tun kann:
App.bat inputArg
Dies setzt jedoch voraus, dass ich alle Abhängigkeiten und Knoten in diesem Ordner habe, was nicht ideal ist.
javascript
windows
node.js
exe
Aishwar
quelle
quelle
Antworten:
Es gibt einige kostenlose und kommerzielle Alternativen. Ich habe keine von ihnen verwendet, aber theoretisch sollten sie funktionieren:
In den meisten Fällen müssen Sie die Batchdatei als ausführbare Hauptdatei beibehalten und dann node.exe und Ihre Skripte bündeln.
Abhängig von Ihrem Skript haben Sie auch die Möglichkeit, es auf JSDB zu portieren. Dies unterstützt eine einfache Möglichkeit, ausführbare Dateien zu erstellen, indem Sie einfach Ressourcen an das Skript anhängen.
Eine dritte Quasi-Lösung besteht darin, den Knoten an einem ähnlichen Ort zu belassen
C:\utils
und diesen Ordner IhrerPATH
Umgebungsvariablen hinzuzufügen . Dann können Sie in diesem Verzeichnis .bat-Dateien erstellen, auf denen node + Ihre bevorzugten Skripte ausgeführt werden.coffee
Auf diese Weise funktioniert Coffeescript unter Windows. Dieses Setup kann mit einer Batch-Datei, einem VB-Skript oder einem Installationsprogramm automatisiert werden.quelle
Die Lösung, die ich verwendet habe, ist Roger Wangs Node-Webkit .
Dies ist eine fantastische Möglichkeit, NodeJS-Apps zu verpacken und zu verteilen. Sie haben sogar die Möglichkeit, die gesamte App als einzelne ausführbare Datei zu "bündeln". Es unterstützt Windows, Mac und Linux.
Hier sind einige Dokumente über die verschiedenen Optionen für die Bereitstellung von Knoten-Webkit - Anwendungen, aber auf den Punkt gebracht, tun Sie folgendes:
Nur als zusätzliche Anmerkung: Ich habe damit mehrere Produktionsbox- / Installations-CD-Anwendungen ausgeliefert, und es hat großartig funktioniert. Dieselbe App läuft unter Windows, Mac, Linux und über das Internet.
Update: Der Projektname wurde in 'nw.js' geändert und befindet sich hier richtig: nw.js.
quelle
Für alle , über diese Frage zu stolpern, gibt es nun zwei Projekte , die EXE - Dateien aus Ihrem Knoten Projekte erstellen, Pkg und Electron.atom.io , sie unterscheiden sich geringfügig:
Die resultierende ausführbare Datei ist NUR Windows (.exe).Alle Plattformen werden jetzt unterstützt.Es erfordert jetzt eine Lizenz für kommerzielle Produkte.Vollständig Open Source.quelle
Standardmäßig ordnet Windows
.js
Dateien dem Windows Script Host zu , der eigenständigen JS-Laufzeit-Engine von Microsoft. Wenn Sie an einer Eingabeaufforderung script.js eingeben (oder.js
im Explorer auf eine Datei doppelklicken ), wird das Skript von ausgeführtwscript.exe
.Dies kann ein lokales Problem mit einem globalen Umfeld zu lösen , aber man konnte assoziieren
.js
Dateien mitnode.exe
statt, so dass der Eingabe script.js an einer Eingabeaufforderung oder einen Doppelklick / Ziehen Elemente auf Skripte werden sie mit Knoten starten.Wenn Sie - wie ich -
.js
Dateien mit einem Editor verknüpft haben, sodass ein Doppelklick darauf Ihren bevorzugten Texteditor öffnet, hilft dieser Vorschlag natürlich nicht viel. Sie können Dateien auch einen Rechtsklick-Menüeintrag "Mit Knoten ausführen" hinzufügen.js
, obwohl diese Alternative Ihre Befehlszeilenanforderungen nicht erfüllt.Die einfachste Lösung besteht wahrscheinlich darin, nur eine Batch-Datei zu verwenden. Sie müssen keine Kopie von Node in dem Ordner haben, in dem sich Ihr Skript befindet. Verweisen Sie einfach auf die ausführbare Node-Datei:
Eine andere Alternative ist diese sehr einfache C # -App, die Node mit seinem eigenen Dateinamen +
.js
als Skript zum Ausführen startet und alle Befehlszeilenargumente weitergibt.Wenn Sie also die resultierende EXE-Datei "app.exe" nennen, können Sie Folgendes eingeben,
app arg1 ...
und Node wird mit der Befehlszeile gestartet"app.js" arg1 ...
. Beachten Sie, dass die C # -Bootstrapper-App sofort beendet wird und Node für das Konsolenfenster verantwortlich ist.Da dies wahrscheinlich von relativ großem Interesse ist, habe ich dies auf GitHub verfügbar gemacht , einschließlich der kompilierten Exe, wenn es Ihr Ding ist, mit Fremden in Lieferwagen zu steigen.
quelle
Das beste Tool, das ich kenne, ist das NodeJS-Tool: zeit / pkg
Es ist sehr einfach zu bedienen (viel mehr als Nexe, nur als Beispiel), Sie können es einfach global installieren:
npm install -g pkg
So erstellen Sie ausführbare Dateien für MacOS, Linux und Windows:
pkg exampleApp.js
Ich hatte ein bisschen komplizierten Code, der den NodeJS-Socket-Server verwendete. Ich habe verschiedene Anwendungen ausprobiert, keine von ihnen hat ihn richtig erstellt, außer zeit / pkg .
quelle
Ich habe es noch nicht versucht, aber nexe sieht so aus, als ob nexe dies tun kann:
https://github.com/crcn/nexe
quelle
Seit diese Frage beantwortet wurde, wurde eine andere Lösung gestartet.
https://github.com/appjs/appjs
Zum Zeitpunkt dieses Schreibens ist dies die Endlösung für das Packen von node.js-Apps über ein abgespecktes Chrompaket, das in eine ausführbare Datei kompiliert wurde.
Bearbeiten: AppJS ist nicht mehr aktiv, schlägt jedoch selbst eine Gabelung namens Deskshell vor.
https://github.com/sihorton/appjs-deskshell/
quelle
Hier gibt es viele gute Antworten, aber sie sind nicht alle so einfach wie JXcore .
Sobald Sie JXcore unter Windows installiert haben, müssen Sie nur noch Folgendes ausführen:
Dadurch wird eine EXE-Datei erstellt, die Sie verteilen und ohne externe Abhängigkeiten ausführen können (Sie benötigen nicht einmal JXcore oder Node.js auf dem System).
Hier ist die Dokumentation zu dieser Funktionalität: http://jxcore.com/packaging-code-protection/#cat-74
Bearbeiten Sie 2018
Das Projekt ist jetzt tot, aber es wird immer noch hier gehostet: https://github.com/jxcore/jxcore-release (danke @Elmue)
quelle
Versuchen Siedisclose
: https://github.com/pmq20/disclosedisclose
macht im Wesentlichen eine selbstextrahierende Exe aus Ihrem Node.js-Projekt und Node.js-Interpreter mit den folgenden Eigenschaften:Keine GUI. Reine CLI.Keine LaufzeitabhängigkeitenUnterstützt sowohl Windows als auch UnixLäuft zum ersten Mal langsam (Extrahieren in ein Cache-Verzeichnis) und dann für immer schnellVersuchen Sie
node-compiler
: https://github.com/pmq20/node-compilerIch habe ein neues Projekt namens erstellt
node-compiler
, um Ihr Node.js-Projekt in eine einzige ausführbare Datei zu kompilieren.Es ist besser als insofern, als
disclose
es zum ersten Mal nie langsam läuft, da Ihr Quellcode zusammen mit dem Node.js-Interpreter kompiliert wird, genau wie die Standardbibliotheken von Node.js.Darüber hinaus werden Datei- und Verzeichnisanforderungen zur Laufzeit transparent in den Speicher anstatt in das Dateisystem umgeleitet. Damit ist kein Quellcode erforderlich, um das kompilierte Produkt auszuführen.
So funktioniert es: https://speakerdeck.com/pmq20/node-dot-js-compiler-compiling-your-node-dot-js-application-into-a-single-executable
Vergleich mit ähnlichen Projekten,
pkg ( https://github.com/zeit/pkg ): Pkg hat fs. * APIs dynamisch gehackt, um auf In-Package-Dateien zuzugreifen, während Node.js Compiler sie in Ruhe lässt und stattdessen über libsquash auf einer tieferen Ebene arbeitet. Pkg verwendet JSON zum Speichern von In-Package-Dateien, während Node.js Compiler das komplexere und weit verbreitete SquashFS als Datenstruktur verwendet.
EncloseJS ( http://enclosejs.com/ ): EncloseJS beschränkt den Zugriff auf In-Package-Dateien auf nur fünf fs. * APIs, während Node.js Compiler alle fs. * APIs unterstützt. EncloseJS ist proprietär lizenziert und berechnet Geld, wenn es verwendet wird, während Node.js Compiler MIT-lizenziert ist und Benutzer es sowohl verwenden als auch ändern können.
Nexe ( https://github.com/nexe/nexe ): Nexe unterstützt aufgrund der Verwendung von browserify keine dynamischen Anforderungen, während der Node.js Compiler alle Arten von Anforderungen unterstützt, einschließlich require.resolve.
asar ( https://github.com/electron/asar ): Asar verwendet JSON zum Speichern der Dateiinformationen , während Node.js Compiler SquashFS verwendet. Asar hält das Codearchiv und die ausführbare Datei getrennt, während Node.js Compiler den gesamten JavaScript-Quellcode mit der virtuellen Maschine Node.js verknüpft und eine einzige ausführbare Datei als Endprodukt generiert.
AppImage ( http://appimage.org/ ): AppImage unterstützt nur Linux mit einem Kernel, der SquashFS unterstützt, während Node.js Compiler alle drei Plattformen von Linux, macOS und Windows unterstützt, ohne dass der Kernel spezielle Funktionsanforderungen stellt.
quelle
Ich empfehle Ihnen BoxedApp dafür. Es ist ein kommerzielles Produkt, das sehr gut funktioniert. Es funktioniert für jede NodeJS-App. Der Endbenutzer erhält nur eine EXE-Datei für Ihre App. Keine Installation erforderlich.
In Electron muss der Endbenutzer beispielsweise Ihre App installieren / dekomprimieren, und er sieht alle Quelldateien Ihres Codes.
BoxedApp Es packt alle Dateien und Abhängigkeiten, die Ihre NodeJS-App benötigt. Es unterstützt Komprimierungen und die kompilierte Datei funktioniert unter Windows XP +
Wenn Sie es verwenden, müssen Sie der kompilierten App Node.EXE hinzufügen. Wählen Sie eine Knotenversion, die Windows XP unterstützt (falls erforderlich)
Das Programm unterstützt Befehlszeilenargumente. Nach dem Paket können Sie dies tun
Und Sie können das Argument in Ihrem Knotencode erhalten:
Manchmal hat Ihre App Dateiabhängigkeiten, sodass Sie in BoxedApp jeden Ordner und jede Datei als Abhängigkeit hinzufügen können. Beispielsweise können Sie eine Einstellungsdatei einfügen.
Mehr Info:
quelle
Ich habe festgestellt, dass eine dieser Lösungen meinen Anforderungen entspricht, und habe daher meine eigene Version des Knotens namens node2exe erstellt, die dies tut. Es ist unter https://github.com/areve/node2exe verfügbar
quelle
Ich habe dieses Thema seit einigen Tagen untersucht und hier ist, was ich gefunden habe. Optionen fallen in zwei Kategorien:
Wenn Sie eine Desktop-App erstellen möchten, sind die besten Optionen:
Hier ist ein guter Vergleich zwischen ihnen: NW.js & Electron Compared . Ich denke, NW.js ist besser und es bietet auch eine Anwendung zum Kompilieren von JS-Dateien. Es gibt auch einige eigenständige ausführbare Datei- und Installationsprogramme wie Enigma Virtual Box . Beide enthalten eine eingebettete Version von Chrome, die für Server-Apps nicht erforderlich ist.
Wenn Sie eine Server-App verpacken möchten, sind dies die besten Optionen:
In dieser Kategorie ist der Node-Compiler meiner Meinung nach besser, da er dynamische Anforderungs- und native Node-Module unterstützt. Es ist sehr einfach zu bedienen und die Ausgabe beginnt bei 25 MB. Einen vollständigen Vergleich mit anderen Lösungen finden Sie auf der Seite Node Compiler. Ich habe nicht viel über Nexe gelesen, aber im Moment scheint Node Compiler die js-Datei nicht mit der V8-Snapshot-Funktion in das Binärformat zu kompilieren, aber es ist für Version 2 geplant. Es wird auch einen integrierten Installer-Builder geben.
quelle
Electron
rechtfertigt nicht, ein gültiger Vorschlag für das Problem des OP zu sein; Es ist ein ganz anderes Node-Framework.Probieren Sie nexe aus, mit dem eine einzelne ausführbare Datei aus Ihren node.js-Apps erstellt wird
https://github.com/nexe/nexe
quelle
Ich habe es satt, an der Eingabeaufforderung mit dem Sieg zu beginnen, und bin dann auch darauf gestoßen. Leicht verbessert ver. über was josh3736 . Hierbei wird eine XML-Datei verwendet, um einige Einstellungen abzurufen. Zum Beispiel der Pfad zu
Node.exe
sowie die Datei, die in der Standard-App.js gestartet werden soll. Auch die zu ladende Umgebung (Produktion, Entwicklung usw.), die Sie in Ihrer app.js (oder server.js oder wie auch immer Sie es genannt haben) angegeben haben. Im WesentlichenNODE_ENV={0}
wird hinzugefügt, wobei {0} der Name Ihrer Konfiguration in app.js als Variable für Sie ist. Sie tun dies, indem Sie das Element "mode" in der Datei config.xml ändern. Sie können das Projekt hier herunterladen ==> github . Beachten Sie, dass Sie in den Post Build-Ereignissen die Kopierpfade so ändern können, dass sie automatisch über Ihre config.xml und die ausführbare Datei in Ihre kopiert werdenNodejs
Verzeichnis, nur um einen Schritt zu speichern. Andernfalls bearbeiten Sie diese oder Ihr Build gibt eine Warnung aus.quelle
Es mag viele andere Optionen geben, aber meines Wissens gibt es ein Projekt in aktiver Entwicklung auf GitHub https://github.com/zeit/pkg . Du kannst damit spielen. Eine weitere unter https://github.com/nexe/nexe, jedoch nicht in aktiver Entwicklung.
quelle
Es gibt ein OpenSource-Build-Tool-Projekt namens Nodebob . Ich gehe davon aus, dass Arbeitsplattformfenster,
Sie finden die ausführbare Datei im Release-Ordner.
quelle