141

Node.jsアプリケーションを作成し、それを配布したいとします。もちろん、ユーザーが簡単に利用できるようにしたいので、Node.jsをインストールして実行npm installし、手動で入力することは望ましくありませんnode app.js

私が好んだのは、単一の実行可能ファイル、たとえば.exeWindows上のファイルでした。

どうすればこれにアプローチできますか?

私はこのスレッドを知っています、とにかくこれはWindowsについてだけです。プラットフォームに依存しない方法でこれをどのように達成できますか?何か案は?ベストプラクティス?...?

完璧な解決策は、ソースフォルダを提供できる「コンパイラ」でした。ソースフォルダーには、アプリ自体がさまざまな.jsファイルに含まれ、node_modulesフォルダーと、などのメタデータが含まれますpackage.json。出力は、Windows、OS X、Linuxなどのさまざまなプラットフォームのバイナリである必要があります。

ああ、そして重要なこと:ソースコードに変更を加えたくないのでrequire、この相対パスがパッケージ化されたアプリ内にある場合でも、相対パスを使用した呼び出しは引き続き機能するはずです。

何か案は?

PS:ユーザーがNode.jsを個別にインストールすることは望ましくありません。実行可能ファイル内にも含める必要があります。

4

7 に答える 7

31

まず、ワークショップやデモなどのために Node.js アプリをパッケージ化することについて話しています。この場合、エンド ユーザーがインストールや依存関係を気にする必要がなく、アプリを「実行中」にすることが便利です。

次のセットアップを試すことができます。

  1. アプリのソース コードを入手する
  2. npm installすべての依存関係 (package.json 経由) をローカルのnode_modules ディレクトリに。バイナリの依存関係がある場合は、サポートする各プラットフォームでこの手順を個別に実行することが重要です。
  3. Node.js バイナリ(Windows ではnode.exe、OS X/Linux では(おそらく) /usr/local/bin/node ) をプロジェクトのルート フォルダーにコピーします。OS X/Linux では、Node.js バイナリの場所はwhich node.

Windows の場合:
自己解凍アーカイブを作成します。7zip_extraは、解凍直後にコマンドを実行する方法をサポートしています。次を参照してください: http://www.msfn.org/board/topic/39048-how-to-make-a-7-zip -switchless-installer/ .

OS X/Linux の場合: makeselfunzipsfx
などのツールを使用できます(これがデフォルトで定義された CHEAP_SFX_AUTORUN でコンパイルされているかどうかはわかりません)。

これらのツールは、アーカイブを一時ディレクトリに抽出し、指定されたコマンド (例: node app.js) を実行し、終了時にすべてのファイルを削除します。

于 2013-01-30T10:30:41.830 に答える
15

死んだ馬を打ち負かすわけではありませんが、あなたが説明しているソリューションはNode-Webkitによく似ています。

Git ページから:

node-webkit は、Chromium と node.js に基づくアプリ ランタイムです。node-webkit を使用して、HTML および JavaScript でネイティブ アプリを作成できます。また、Node.js モジュールを DOM から直接呼び出すこともでき、すべての Web テクノロジを使用してネイティブ アプリケーションを作成する新しい方法が可能になります。

これらの手順では、ユーザーが実行できる単一ファイル アプリの作成について具体的に詳しく説明します。この部分では、外部依存関係について説明します。

それが正確な解決策かどうかはわかりませんが、かなり近いようです。

それが役に立てば幸い!

于 2014-06-23T21:59:38.190 に答える
8

JXcore を使用すると、Windows、Linux、または Mac OS X のいずれかで、すべての依存関係を含むあらゆる nodejs アプリケーションを単一の実行可能ファイルに変換できます。

インストーラーへのリンクは次のとおりです: https://github.com/jxcore/jxcore-release

そして、ここにそれを設定する方法へのリンクがあります: http://jxcore.com/turn-node-applications-into-executables/

非常に使いやすく、Windows 8.1 と Ubuntu 14.04 の両方でテストしました。

参考までに: JXcore は NodeJS のフォークであるため、NodeJS と 100% 互換性があり、いくつかの追加機能があります。

于 2015-02-10T20:08:45.177 に答える
7

nexe に加えて、browserifyを使用して、すべての依存関係を 1 つの.jsファイルとしてまとめることができます。これは実際のノード実行可能ファイルをバンドルせず、javascript 側を処理するだけです。これもネイティブ モジュールを処理しません。純粋なノード コンパイルのコマンド ライン オプションはbrowserify --output bundle.js --bare --dg false input.js.

于 2014-05-15T19:03:38.843 に答える
-1

git リポジトリを作成し、依存関係としてノード git リポジトリへのリンクをセットアップできます。次に、レポを複製するユーザーはノードもインストールできます。

#git submodule [--quiet] add [-b branch] [-f|--force]
git submodule add /var/Node-repo.git common

スクリプトを簡単にパッケージ化して、どこかにホストしている git リポジトリを自動的に複製し、その 1 つのスクリプト ファイルから「インストール」することができます。

#!/bin/sh
#clone git repo
git clone your-repo.git
于 2013-01-17T04:14:28.050 に答える