2016-05-01 11 views
3

私はLinuxで簡単なHello World Electronアプリを試しています。私はそれをパッケージ化してWindows上にインストールして、うまく動作しているかどうかをテストしたい。Electronデスクトップアプリケーションをパッケージ化する際にnode_modulesを含めますか?

「npm install」を実行すると、〜112 MBのnode_modulesフォルダが作成されました。私はまだこれらのモジュールを使用するものはありませんし、このフォルダも削除するとサンプルが正常に起動します。 package.jsonファイルはdevDependenciesの唯一の項目として 'electron-prebuilt'を持っていますので、node_modulesフォルダがそのためであると仮定します。

Windowsで実行したい場合は、このフォルダを最終パッケージに含めるべきですか?

私は文書hereをチェックしましたが、それは3つのファイルしか持たず、依存関係もありませんので、明示的にいくつかのものがある場合に何をすべきか分かりませんでした。

答えて

2

electron-packagerは、プラットフォームごとに電子アプリケーションを構築する際の退屈な部分を取り除く軽量な抽象です。

アプリケーションを実行し、指定したオペレーティングシステムごとに実行可能ファイルを作成します。あなたのアプリケーションをバンドルします。 node_modulesが最終ビルドになるように指定することについて心配する必要はありません。

一般に、node_modulesをバージョンコントロールにチェックすることは推奨されません。

+0

パッケージ化中にignoreプロパティにnode_modulesを追加しましたが、サイズは変わりません。 exeファイル自体は70 MBでしたが、それは電子をバンドルしているからでしょうか?私が電子パッケージャを使用するかどうかに関係なく、私はいくつかの同様のサイズのパッケージで終わるでしょうか? – Kodathon

+0

Kodathon-Yea、私の経験上、OS Xのバンドルは約450MB、Linuxは約120MB、Windowsの場合は225です。これは、私たちが書いたコードを超えて、Chromeのすべてのバージョン、すべてのNode、そしてOS統合のためのパッケージの束をかなり含んでいるからです。 –

+0

スティーブ・キニー - かなり大きいです。マイクロソフトのVisual Studio CodeはElectronの上に構築されていますが、巨大なインストーラではないようです。とにかく、前提条件チェックの後など、ターゲットシステムにまだ存在していない場合にのみ、ノードなどが配備されるように配備することはできませんか? – Kodathon

7

短い答え:

あなたはnpm経由で追加のライブラリをインストールして、あなたのコードからそれらを参照する場合、最終的なディストリビューションでnode_modulesフォルダが必要です。

長い答え:

私はわからないんだけど、あなたはまた、NPMパッケージですelectron-prebuiltを、インストールしているため、あなたはおそらく混乱しているが、それは開発とパッケージングのために必須ですので、この1は、特別で、そしてdoesnのあなたのアプリのためのシンプルなライブラリとして機能しません。開発とアプリケーションのパッケージを分離するために、アプリケーションに2つのパッケージ構造を使用することをお勧めします。ここ(のはMyAppそれを呼びましょう)私の電子アプリケーションのためのフォルダ構造の例です:

  • のMyApp:ソリューションのルートフォルダ、これはあなたのリポジトリルートフォルダに

    • gulpfileをマップするシンプルなアプリのために.js - gulpを使用する場合の構成を構築する
    • package.json-devパッケージのメタデータ。デベロッパーパッケージはアプリケーションではなく、むしろラッパーです。
    • 他のファイル(.hgignore、README.mdなど)。
    • node_modules:すべてのDEVの依存関係は、これはレポ
    • distのからexludedなどプラグイン、飲み込む、gulpelectron-prebuiltのように、あなたが開発のために必要なパッケージを、含まれています:配布フォルダを、これはどこ私の一気のタスクでありますそれが生産に行くときにパッケージ化されたアプリの配布を置くことです。レポから除外

    • src:すべてのアプリソース。これがあなたのアプリケーションです。このフォルダの内容はすべて、配布物にまとめられます。

      • bower.json - 亭マニフェスト、あなたはそれを
      • package.json使用している場合 - アプリのパッケージのメタデータ
      • node_modules:すべてのNPMアプリの依存関係(などのsqlite、角度、D3、など) ; - アプリのエントリポイントだから、

、私はインストールする必要があり、すべての亭アプリの依存関係レポから除外

  • app.js:レポ
  • bower_modulesから除外パッケージ、私は開発に役立ちます(通常glupプラグイン)私は/ MyAppに移動し、そこにnpm install -D [package]を実行します。フロントエンドのフレームワークのように、私のアプリが使うライブラリをインストールする必要があるときは、/ MyApp/srcに移動し、そこでnpm install -S [package]を実行します。

    開発中に電子アプリケーションをすばやく実行する必要があるときは、/MyApp/srcフォルダをgulp-run-electronプラグインにフィードします。また、electron-prebuiltをdevパッケージにインストールした場合は、/MyAppに移動し、/MyApp/node_modules/electron-prebuilt/dist/electron[.exe] ./srcを実行してください。 npm i -g electron-prebuiltelectron-prebuiltをグローバルにインストールして、electron ./srcを実行するだけでも可能です。

    リリースまたはテストのために私のアプリケーションをパッケージ化する必要があるときは、私はgulp-electron glupのプラグインを使って配布を作成します。 electron-packagerを使用する方法や、自分の選択したビルドシステムのラッパーの1つを使用する方法、またはすべてを手動で行う方法など、他の方法もあります。

    編集:あなたはサイズが気になるので、あらかじめ作成された電子自体にかなりのスペースが必要ですが、インストーラは7zのようなアーカイバで効果的に縮小できます。

  • +0

    チュートリアルアプリを開発するときに、私の過密なnode_modulesによって私も謎に遭っていました。あなたは私の電子予備ビルドの使用がそれを説明できることを理解する助けになりました。 –

    関連する問題