質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Linux

    3926questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Node.js

    1946questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Ubuntu

    1501questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • npm

    300questions

    npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

  • Electron

    199questions

    Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

npmの不要なグローバルモジュールを消してパッケージする際のサイズを縮小したい。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 713

obon_t

score 40

パッケージ化する際のサイズを縮小したいです。

electronを使用してパッケージ化しているのですが、グローバルのモジュールが肥大化してしまったのかファイルサイズがただの「HelloWorld」を出力するだけのものなのに300MB(.app)ほどあります。

最初にパッケージした際は60MBほどで収まっていたのですが、知らず知らずにモジュールをグローバルで入れたせいか容量が膨れ上がってしました。そこで、パッケージサイズを縮小したいと思い、使っていないであろうグローバルモジュールを消したいのですが、それを見分ける方法などありますでしょうか?

モジュールの数が多くがどのモジュール必要なのかわからなくなって困っています。

ちなみに、ローカルのモジュールは使用しておりません。
(関係あるかわかりませんが、windowsのパッケージに対応するためにwineのパッケージを入れました。)

また、モジュール削除以外の方法でもパッケージサイズ縮小の方法などありましたら、ご教授いただける幸いです。

モジュール内容

hoge@s26:~$ npm list --depth=0 -g
/usr/local/lib
├── ansicolors@0.3.2
├── ansistyles@0.1.3
├── archy@1.0.0
├── call-limit@1.1.0
├── cmd-shim@2.0.2
├── columnify@1.5.4
├── config-chain@1.1.11
├── detect-indent@5.0.0
├── editor@1.0.0
├── electron@1.7.6
├── electron-packager@9.1.0
├── fs-vacuum@1.2.10
├── init-package-json@1.10.1
├── JSONStream@1.3.1
├── lazy-property@1.0.0
├── libnpx@9.6.0
├── lockfile@1.0.3
├── lodash._baseindexof@3.1.0
├── lodash._baseuniq@4.6.0
├── lodash._bindcallback@3.0.1
├── lodash._cacheindexof@3.0.2
├── lodash._createcache@3.1.2
├── lodash.clonedeep@4.5.0
├── lodash.restparam@3.6.1
├── lodash.union@4.6.0
├── lodash.uniq@4.5.0
├── lodash.without@4.4.0
├── meant@1.0.0
├── n@2.1.8
├── node-gyp@3.6.2
├── nopt@4.0.1
├── npm@5.4.2
├── npm-cache-filename@1.0.2
├── npm-install-checks@3.0.0
├── npm-lifecycle@1.0.2
├── npm-registry-client@8.4.0
├── npm-user-validate@1.0.0
├── opener@1.4.3
├── pacote@6.0.2
├── read-cmd-shim@1.0.1
├── read-installed@4.0.3
├── read-package-tree@5.1.6
├── sha@2.0.1
├── sorted-object@2.0.1
├── sorted-union-stream@2.1.3
├── text-table@0.2.0
├── unpipe@1.0.0
└── worker-farm@1.5.0

補足情報(言語/FW/ツール等のバージョンなど)

・Ubuntu 16.04.3 LTS
・npm(5.3.0)
・n
・node.js(8.5.0)
・electlon(1.7.6)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

npmのローカルモジュールはパッケージの肥大化に影響しますが、グローバルモジュールがElectronのパッケージ肥大化に影響することは無いでしょう。
一度プロジェクトのnode_modulesフォルダを削除してnpm installし直してみるとか、あるいはnpm install --productionを実行してdependenciesのパッケージのみ(devDependenciesは入らない)インストールされた状態にしてみるとどうでしょうか。

他にはelectron-packagerでパッケージする場合、たいていはelectron-packager .とプロジェクトのフォルダを指定するため不要なフォルダをパッケージに含んでしまい肥大化することがあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/12 23:42

    ご回答ありがとうございます!
    ご返事遅くなって申し訳ありません。

    おっしゃる通り、プロジェクトのフォルダを指定するため不要なフォルダをパッケージに含んでしまい肥大化していたようです。

    今まで、グローバルモジュールはパッケージした際、すべて含まれてしまうものだと、勘違いしてました..。

    ありがとうございました。

    キャンセル

0

とりあえず、まずはバックアップ(今インストールしているパッケージリスト)をとりましょう。

npm list --depth=0 -g > /home/hode/Desktop/package.bak

そしてそれぞれのパッケージに関して、npm show コマンドで説明を見て、
「使ってない気がする」
というものは、removeして、そのあとelectron製のアプリが起動するか確認。
起動を確認したら、またいらなそうなパッケージを npm show で確認し、electron製のアプリが起動するか確認……というのを地道に繰り返してください。

(関係あるかわかりませんが、windowsのパッケージに対応するためにwineのパッケージを入れました。)

今回に関しては関係ないです。


ここからいくつか偏見を申し上げます。ご容赦ください。

electron に関しては必須ですね。

lodashって使ってます? JavaScriptで関数型プログラミングしているのならばその限りではないですが、特にそういったことをしていなければ必要ないと思われます。なので lodash. 系はremoveしていいと思います。

n を入れてるようですが、使っていないのでは?


私が指摘できるのはこれくらいでしょうか、拙い回答で申し訳ございません。

以上、参考になれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

  • 受付中

    Electron でローカルファイル情報の取得

    Electron で以下のようなことができるのでしょうか? 何がしたいのかというと、社内で「そういえばあのファイルどこにある?」 ってのを、ファイルの利用履歴を共有することで解決

  • 受付中

    node moduleのrequestのSSL証明書について

    現在Electronで動作するアプリケーションを作成しております。 自己証明書を使っているサイトにブラウザ(IE, Chrome)でアクセスした場合、警告画面が表示されるかと思い

  • 解決済

    javascriptの非同期処理、promiseについて

    概要 現在、javascriptとelectronを用いて、メモ帳アプリのようなものを作っています。 データベースへのアクセスに伴う非同期処理について、promiseの使い方が

  • 解決済

    【JavaScript】indexOfで特定文字が反応しない

    JavaScriptのindexOfメソッドで、文章の検索を実行しているのですが、 何故か「よという文字だけが反応しません。 「あや「漢、「alphaなどはしっかりと開始位

  • 解決済

    Electron ウィンドウの手前・奥 移動

    Electronでデスクトップウィジェットを作っています。 JavaScriptから、ウィンドウを最前面や最背面に移動する方法を教えてください。

  • 受付中

    electronをパソコンにインストールする方法

    素朴な疑問なのですが、electronをディレクトリではなく、パソコンにインストールする方法はありますでしょうか? よろしくおねがいします。

  • 解決済

    Electronが実行できない

    前提・実現したいこと Electronを使用してアプリケーションを作成しています 発生している問題・エラーメッセージ main\.js:9 app\.on\('windo

  • 解決済

    Node.jsから実行中のアプリケーションを取得する

    前提・実現したいこと Electronから、他のアプリケーション実行元のディレクトリを取得したいです 調べたこと かなり調べたのですが、実行中のプロセスを取得するには VBSc

同じタグがついた質問を見る

  • Linux

    3926questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Node.js

    1946questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Ubuntu

    1501questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • npm

    300questions

    npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

  • Electron

    199questions

    Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。