質問: node.js + express webアプリケーションをパッケージ化してデプロイする方法 私はnode.jsプログラミングを初めて使用し、最近(mongodbを使用したエクスプレス、バックボーン、その他の無料のビューテクノロジー)を使用してサンプルの動作webアプリケーションを作成しました。今、私はステージング環境に同じものを展開したいと思っていますが、このアプリケーションをパッケージ化して同じものを配布する方法がわかりません。 [mongodbの面倒を見て、個別に設定できます]私はjavaの世界から来ました。そこで、サーブレットコンテナにデプロイされたwebアプリケーション用の再利用可能なライブラリとwar/earパッケージ用のjarを作成します。この場合、node.js自体もwebコンテナとして機能するため、webappをパッケージ化するにはどうすればよいですか? expressを使用して構築されたパッケージングノードwebappsの標準形式/ガイドラインはありますか? (ノードアプリ用の同様のjar/warパッケージシステムはありますか?) パッケージ化したら、どのようにデプロイしますか?それは独自のコンテナでもあるので、exeになりますか? ps:今のところ、必要なすべてのソースファイルをステージング環境に手動でコピーし、npmコマンドを実行してそのマシンのすべての依存関係をダウンロードし、「永久」または他のメカニズムを使用してserver.jsを実行することを考えています。 (また、アプリがクラッシュして永遠に失敗する場合のために、何らかの監視を追加します)それが正しい方法かどうかわかりませんか?この問題に対処するための標準化された方法がなければならないと確信しています。
回答: node.jsアプリケーションのデプロイは非常に簡単です。 mavenには、pom.xmlがあります。 node.jsの関連概念はpackage.jsonです。 package.jsonへの依存関係を述べることができます。 package.jsonで環境設定を行うこともできます。たとえば、開発環境では、それを言うことができます 単体テストを実行したい。 しかし、生産中; 単体テストをスキップしたい。 .m2フォルダーの下にmavenのローカルリポジトリがあります。 node.jsでは、node.jsプロジェクトの下にnode_modulesフォルダーがあります。モジュールフォルダーとその名前を確認できます。この答えのgruntの部分に行きましょう。 gruntは、フロントエンドアセット、html、javascript、cssのタスクマネージャーです。たとえば、展開する前に、html、css、javascript、さらに画像を縮小できます。 gruntタスク実行関数をpackage.jsonに配置することもできます。サンプルアプリケーションをご覧になりたい場合は、サンプルブログアプリケーション here をご覧ください。参照用にフォルダー構造とpackage.jsonを確認してください。展開については、スタートアップアプリケーション用のheroku展開をお勧めします。 howto here を見つけることができます。これは単純なgitベースの展開です。プロジェクトの実行部分で、環境node_env=developmentおよびnode app.jsを設定するだけです。ここにapp.jsがプロジェクトにあります。javaとnodejsの相対的な概念は次のとおりです。 maven clean install => npm install .m2フォルダー=> node_modules(プロジェクトフォルダーの下) mvn test => npm test(package.jsonのテストセクション) junit、powermock、... => mocha 、 node-unit 、... spring mvc => express.js pom.xml => package.json import package => require('module_name')