package.jsonで未使用のnpmパッケージを見つける


68

package.jsonファイルに不要なパッケージがあるかどうかを判断する方法はありますか?

たとえば、パッケージを試して後でコメントやコメントを削除すると、アンインストールするのを忘れると、私はいくつかのパッケージを削除する可能性があります。

パッケージを安全に削除できるかどうかを判断する効率的な方法はありますか?

60

depcheckと呼ばれるnpmモジュールを使用することができます。

  1. モジュールをインストールします。このアプローチの良いところは、あなたが持っていないということです

    depcheck 
    

:ファイル名を指定して実行

npm install depcheck -g 
  • それを、未使用の依存関係を見つけますfindまたはgrepコマンドを覚えておいてください。

  • +1

    'return新しいPromise(関数(resolve、reject){:ReferenceError:Promise is defined' ...残念な。 npm-check 16 12月. 152015-12-16 22:27:25

    +10

    depcheck-es6がdepcheckにマージされるようになりました。 04 1月. 162016-01-04 00:27:08

    +2

    は役に立ちません。私は標準のangular2 cli setupを使用しており、 'depcheck'はすべてのパッケージを' unused'としてリストアップしています。 10 2月. 172017-02-10 19:07:03

      0

    gpmの統合のためのモジュールがあるので、これをnpm-checkで使用しました:https://github.com/depcheck/gulp -depcheck。 20 3月. 172017-03-20 21:08:25

    +1

    この目的のために私が今までに見つけた最高のパッケージ 08 2月. 182018-02-08 04:29:58


    2

    あなたは、あなたが検索しfindegrepの組み合わせを使用することができます(などのLinux、OSX、)OSなどのUnixのを使用している場合は、あなたのパッケージ名を含む文が必要になります。

    find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni 'name-of-package' {} \; 
    

    あなたが検索した場合

    find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni 'require("name-of-package")' {} \; 
    

    または

    :全体require('name-of-package')文に対して、引用符の正しい種類を使用することを忘れないでください

    完全に自動ではない、つまりpackage.jsonからパッケージ名を抽出してチェックしていないという点が欠点です。あなたはあなた自身で各パッケージのためにこれを行う必要があります。 package.jsonは単なるJSONなので、child_process.execという小さなスクリプトを書いて、各依存関係に対してこのコマンドを実行することでこれを解決できます。それをモジュールにする。


    56

    npm-checkというパッケージもあります:

    npm-check

    Check for outdated, incorrect, and unused dependencies.

    enter image description here

    それは非常に強力かつ積極的に開発しています。そのうちの1つは、未使用の依存関係をチェックする機能です。この部分では、もう1つの答えに記載されているdepcheckモジュールを使用しています。

      0

    私はこれが好きです。ありがとう! 10 10月. 162016-10-10 19:26:34


    0

    最も簡単な方法は、NPMインターフェイス自体を使用している:

    $ npm prune 
    

    私は私が働いているプロジェクトでこれを実行し、これは結果だった:

    root:~/project $ npm prune 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    unbuild [email protected] 
    

    公式ドキュメント - https://docs.npmjs.com/cli/prune

    +8

    参考のため、これは質問の反対です。これは、package.jsonに記載されていないインストールされたパッケージを見つけて削除します。 18 5月. 162016-05-18 05:39:44

    +3

    @DavidMason - 良い呼び出しです。私の失読症が完全に効いて来る:) 24 5月. 162016-05-24 21:04:47