Ich bin neu in der Programmierung von Node.j und habe kürzlich eine funktionierende Webanwendung erstellt, die (Express-, Backbone- und andere kostenlose Ansichtstechnologien mit MongoDB) verwendet. Jetzt bin ich an einem Punkt angelangt, an dem ich dasselbe in einer Staging-Umgebung bereitstellen möchte, und ich bin nicht sicher, wie ich diese Anwendung verpacken und verteilen soll. [Ich kann mich um mongoDb kümmern und es separat einrichten]
Ich komme aus der Java-Welt und dort erstellen wir Jars für wiederverwendbare Bibliotheken und War / Ear-Pakete für Webanwendungen, die in einem Servlet-Container bereitgestellt werden. Wie verpacke ich in diesem Fall meine Webanwendung, da node.js selbst auch als Webcontainer fungiert?
- Gibt es Standardformate / -richtlinien für mit Express erstellte Webapps für Verpackungsknoten? (Gibt es ein ähnliches Jar / War-Verpackungssystem für Node-Apps?)
- Wie stelle ich es nach dem Packen bereit? Würde es eine Exe werden, da es auch ein eigener Container ist?
PS: Ab sofort denke ich daran, alle erforderlichen Quelldateien manuell in die Staging-Umgebung zu kopieren und npm-Befehle auszuführen, um alle Abhängigkeiten von diesem Computer herunterzuladen, und dann "forever" oder einen anderen Mechanismus zum Ausführen meiner server.js zu verwenden. (Fügen Sie außerdem eine Art Überwachung hinzu, falls die App abstürzt und für immer ausfällt.) Ich bin mir nicht sicher, ob dies der richtige Weg ist. Ich bin sicher, dass es einen standardisierten Weg geben muss, um dieses Problem anzugehen.
Antworten:
Es gibt keinen standardisierten Weg, aber Sie sind auf dem richtigen Weg. Wenn Ihr
package.json
App aktuell und gepflegt ist, können Sie Ihr App-Verzeichnis einfach in das Produktionssystem kopieren / zipen / klonen, ausgenommen dasnode_modules
.Führen Sie
npm install
auf Ihrem Produktionssystem aus, um Ihre Abhängigkeiten zu installieren,npm test
wenn Sie Tests haben und schließlichNODE_ENV=production node server.js
Einige aktuelle Folien, die ich als sehr hilfreich erachtet habe und die auch das Thema Wrapper wie für immer enthalten, finden Sie hier .
quelle
Das Bereitstellen von
Node.js
Anwendungen ist sehr einfach. In Maven gibt espom.xml
. Verwandte Konzept inNode.js
istpackage.json
. Sie können Ihre Abhängigkeiten angebenpackage.json
. Sie können die Umgebung auch einrichtenpackage.json
. Zum Beispiel kann man das in einer Entwicklungsumgebung sagenaber in der Produktion;
Sie haben lokale Repositorys für Maven unter
.m2
Ordner. In Node.js befindet sichnode_modules
unter Ihrem Node.js-Projekt ein Ordner. Sie können Modulordner mit ihrem Namen sehen.Kommen wir zum
grunt
Teil dieser Antwort.Grunt
ist ein Task-Manager für Ihre Frontend-Assets, HTML, Javascript, CSS. Beispielsweise können Sie vor der Bereitstellung HTML-, CSS- und Javascript-Bilder minimieren. Sie können auchgrunt
Task-Run-Funktionen einfügenpackage.json
.Wenn Sie an einer Beispielanwendung suchen möchten, können Sie ein Beispiel Blog - Anwendung finden hier . Überprüfen Sie die Ordnerstruktur und
package.json
als Referenz.Für die Bereitstellung empfehle ich Ihnen die Heroku-Bereitstellung für Startanwendungen. Anleitungen finden Sie hier . Dies ist eine einfache git-basierte Bereitstellung.
Stellen Sie im Projektlauf einfach Ihre Umgebung
NODE_ENV=development
und einnode app.js
. Hierapp.js
ist in Ihrem Projekt.Hier ist das relative Konzept für Java und NodeJs;
maven clean install
=>npm install
.m2
Ordner =>node_modules
(Unter Projektordner)mvn test
=>npm test
(Testabschnitt aufpackage.json
)junit
,powermock
, ... => Mokka , node-Einheit , ...Spring MVC
=> Express.JSpom.xml
=>package.json
import package
=>require('module_name')
quelle
mvn clean install
erstellt eine gebündelte .war-Datei, die einfach auf jedem Server der Welt bereitgestellt werden kann undjava -jar *.war
auf dem Server ausgeführt wird. Aber wie kann ich eine gebündelte Datei für mein Knotenprojekt erstellen !! und wie kann ich es auf dem Server ausführen !!Ja, die CommonJS-Paketspezifikation :
Für Ihre nächste Frage:
Ich stimme Hüseyins Vorschlag zu, Heroku für die Produktion einzusetzen . Für die Entwicklung und Bereitstellung verwende ich Node-Appliance mit VirtualBox bzw. Amazon EC2:
Ihre Webapp wird nicht zu einer
exe
.quelle
Ich hoffe, dies ist hilfreich für jemanden, der nach einer Lösung sucht. Das Packen von Node js-Apps kann mit dem Befehl "npm pack" durchgeführt werden. Es wird eine Zip-Datei Ihrer Anwendung erstellt, die in einer Produktions- / Staging-Umgebung ausgeführt werden kann.
quelle
Einige Möglichkeiten, dies zu erreichen:
Schieben Sie Ihren Code in das Git-Repository, schließen Sie alles aus, was nicht Ihr Code ist (
node_modules/**
), ziehen Sie ihn dann in Ihre Staging-Umgebung und führen Sie ihn ausnpm install
, um alle Abhängigkeiten wiederherzustellenErstellen Sie daraus ein NPM-Paket und installieren Sie es über
npm
in Ihrer Staging-Umgebung (dies sollte auch alle Abhängigkeiten berücksichtigen).manuelle Kopier- / SSH-Dateien in Ihre Staging-Umgebung (dies kann automatisiert werden
Grunt
), bevor Sie Ihre Abhängigkeiten über wiederherstellennpm
quelle
Ich habe das pkg-Modul von zeit verwendet. Es kann plattformübergreifende Ergebnisse für Linux / Win / Macos erstellen. Wird tatsächlich in der Produktion verwendet und funktioniert problemlos.
Es nimmt alle js-Skripte auf und packt sie in eine einzige Datei.
Der Grund, warum ich es verwendet habe, ist, dass es bei der Sicherung Ihres Quellcodes hilft. Auf diese Weise haben sie in der Produktion in der Kundenumgebung Zugriff auf die Anwendung, jedoch nicht auf den Quellcode.
Einer der Vorteile ist auch, dass der Kunde in der Produktionsumgebung nicht unbedingt node.js installieren muss, da die Knoten-Binärdateien auch im Build gepackt werden.
https://www.npmjs.com/package/pkg
quelle