問題点
npm v3を使っていると、electron-packager や electron-prebuiltが依存している module がビルドしたパッケージに含まれてしまい、ファイルサイズが大きくなってしまう
原因
npm v3 では、以下の画像のように node_modules にフラットに依存パッケージが展開されます。
あるパッケージ modA
が modB
, modC
に依存している時、npmのバージョンによってフォルダ構成が以下のように変わります。
- npm v2 の場合
.
└── node_modules
└── modA
├── modB
└── modC
- npm v3 の場合
.
└── node_modules
├── modA
├── modB
└── modC
electronのアプリをパッケージ化する際、electron-packager の ignore
プロパティにて electron-packager や electron-prebuilt をパッケージ対象から除外します。
npm v2の場合は electron-packager や electron-prebuilt が依存しているモジュールはそれぞれのフォルダ配下にあるため、パッケージ対象から除外されます。
対応方法
(その場しのぎ) npmのバージョンをv2に落とす
力技で ignore
に依存パッケージを列挙しても良かったのですが、面倒くさかったので npm のバージョンをv2に落とします。
$ npm install -g npm@v2.15.3
$ npm -v
2.15.3
で、node_modulesフォルダを一旦削除し、npm install
をやりなおします。
フォルダ数が目に見えて少なくなってますね。
根本的な対応ではないですが、とりあえずの回避策として共有してみました。
【2016/04/25 追記】
【適切な対応方法】--global-style
オプションを指定する
npm v3でも、npm install
の際に --global-style
オプションを指定することで、以前のようにパッケージごとの依存関係を反映したフォルダツリーとなります。
$ npm -v
3.8.8
$ npm install --global-style
見事に期待するフォルダ構成になっていますね。