web-dev-qa-db-ja.com

node.jsソースファイルをコンパイルする方法はありますか?

node.js アプリケーションをコンパイルする方法はありますか?

55
Mark

私は非常に遅いかもしれませんが、nodejs +スクリプトを1つの実行可能ファイルでコンパイルする「nexe」モジュールを使用できます。 https://github.com/crcn/nexe

51
Metal3d

Node.jsはV8 Javascriptエンジンの上で実行されます。V8Javascriptエンジン自体は、javascriptコードをネイティブコードにコンパイルすることでパフォーマンスを最適化します。

https://developers.google.com/v8/design#mach_code

17
Tor P

EncloseJS

ソースなしで完全に機能するバイナリを取得します。

ネイティブモジュールもサポートされています。 (同じフォルダーに配置する必要があります)

JavaScriptコードは、V8内部コンパイラーを使用してコンパイル時にネイティブコードに変換されます。したがって、ソースをバイナリを実行する必要はなく、パッケージ化されていません。

完全に最適化されたネイティブコードは、クライアントのマシンに基づいて実行時にのみ生成できます。その情報がなければ、EncloseJSは「最適化されていない」コードのみを生成できます。 NodeJSの約2倍の速度で実行されます。

また、実行時にアプリケーションのノードAPIをサポートするために、node.jsランタイムコードが(コードと共に)実行可能ファイル内に配置されます。

ユースケース:

  • ソースなしでアプリケーションの商用バージョンを作成します。
  • ソースなしでアプリのデモ/評価/試用版を作成します。
  • 何らかの自己解凍アーカイブまたはインストーラーを作成します。
  • Node-thrustを使用して、クローズドソースGUIアプリケーションを作成します。
  • コンパイルされたアプリケーションをデプロイするためにノードとnpmをインストールする必要はありません。
  • アプリケーションをデプロイするためにnpm installを介して数百のファイルをダウンロードする必要はありません。単一の独立したファイルとして展開します。
  • アセットを実行可能ファイルに入れて、さらに移植性を高めます。アプリをインストールせずに、新しいノードバージョンに対してテストします。
11
Robinicks

ここに答えがありました: NodeJSアプリケーションの安全な配布 。 Raynos氏:V8ではJavaScriptをプリコンパイルできます。

7
Andre Jonker

Closure compiler を使用して、javascriptをコンパイルできます。

CoffeeScript を使用して、coffeescriptをjavascriptにコンパイルすることもできます。

コンパイルで何を達成したいですか?

言うまでもなく、任意のノンブロッキングJavaScriptをコンパイルするというタスクは非常に困難です。

CやASMにコンパイルすることで得られる速度はそれほど大きくありません。サブプロセスを介してCプログラムへの計算をオフロードします。

4
Raynos

現在、これには必要以上のものが含まれている可能性があります(また、非グラフィカル環境でのコマンドラインアプリケーションでも動作しないかもしれません)が、 nw.js があります。点滅(つまり、Chromium/Webkit)+ io.js(つまり、Node.js)です。

node-webkit-builder を使用して、Linux、OS X、およびWindows用のネイティブ実行可能バイナリをビルドできます。

GUIが必要な場合、それは大きなプラスです。 Webテクノロジーを使用して構築できます。そうしない場合は、"node-main"package.jsonを指定します(おそらく"window": {"show": false}を使用しますが、mainではなくnode-mainを使用するだけでも機能します)

私はそれを正確にこのように使用しようとはせず、可能性としてそこに放り投げました。私はそれが確かに非グラフィカルなNode.jsアプリケーションのためのidealソリューションではないと言うことができます。

0
1j01