回答:
depcheckと呼ばれるnpmモジュールを使用できます(少なくともノードのバージョン10が必要です)。
モジュールをインストールします。
npm install depcheck -g
or
yarn global add depcheckそれを実行して、未使用の依存関係を見つけます。
depcheckこのアプローチの良い点は、findまたはgrepコマンドを覚えておく必要がないことです。
インストールせずに実行するには、npx を使用します。
npx depcheck
depcheckすべてのパッケージをリストしていますが、unusedこれは間違っています
というパッケージもありますnpm-check:
npm-check
古く、正しくない、未使用の依存関係を確認します。

それは非常に強力で、積極的に開発されています。その1つは、未使用の依存関係をチェックする機能です。この部分ではdepcheck、他の回答で言及されているモジュールを使用します。
npm outdated現在、必要、最新のパッケージバージョンをチェックして一覧表示します。ただし、未使用のパッケージのリストはありません。
あなたはOSのようなUnixの(などのLinux、OSXを、)を使用しているなら、あなたはを組み合わせて使用することができますfindし、egrepあなたのパッケージ名を含む必要書類を検索します:
find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni 'name-of-package' {} \;
require('name-of-package')ステートメント全体を検索する場合は、必ず正しいタイプの引用符を使用してください。
find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni 'require("name-of-package")' {} \;
または
find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni "require('name-of-package')" {} \;
欠点は、完全に自動化されていないpackage.jsonことです。つまり、パッケージ名が抽出されてチェックされません。これは、パッケージごとに自分で行う必要があります。以来package.jsonちょうどJSONで、これは使用しています小さなスクリプト書き込むことによって改善することができchild_process.exec、それぞれの依存関係のため、このコマンドを実行することを。そして、それをモジュールにします。そして、それをNPMリポジトリに追加します...
.jsxファイルや.tsファイルなどはどうですか:D
フィスケベンは書きました:
欠点は、完全に自動化されていないことです。つまり、package.jsonからパッケージ名を抽出してチェックしません。これは、パッケージごとに自分で行う必要があります。
なんらかの理由depcheckで正しく機能しない場合は、Fiskebenの回答を自動化しましょう。(例えば、私はTypescriptでそれを試しました、そしてそれは不必要な構文解析エラーを出しました)
解析package.jsonにはソフトウェアを使用できますjq。以下のシェルスクリプトには、開始するディレクトリ名が必要です。
#!/bin/bash
DIRNAME=${1:-.}
cd $DIRNAME
FILES=$(mktemp)
PACKAGES=$(mktemp)
find . \
-path ./node_modules -prune -or \
-path ./build -prune -or \
\( -name "*.ts" -or -name "*.js" -or -name "*.json" \) -print > $FILES
function check {
cat package.json \
| jq "{} + .$1 | keys" \
| sed -n 's/.*"\(.*\)".*/\1/p' > $PACKAGES
echo "--------------------------"
echo "Checking $1..."
while read PACKAGE
do
RES=$(cat $FILES | xargs -I {} egrep -i "(import|require).*['\"]$PACKAGE[\"']" '{}' | wc -l)
if [ $RES = 0 ]
then
echo -e "UNUSED\t\t $PACKAGE"
else
echo -e "USED ($RES)\t $PACKAGE"
fi
done < $PACKAGES
}
check "dependencies"
check "devDependencies"
check "peerDependencies"
まず、パッケージ名とファイルをキャッシュできる2つの一時ファイルを作成します。
findコマンドから始まります。1行目と2行目では、node_modulesとbuildフォルダー(または必要なもの)を無視します。3行目には許可された拡張子が含まれています。JSXまたはJSONファイルなど、ここにさらに追加できます。
関数は依存型を読み取ります。
最初catはpackage.jsonです。次に、jq必要な依存関係グループを取得します。({} +たとえば、ファイルにピアの依存関係がない場合にエラーをスローしないようにするためです。)
その後sed、引用符の間の部分、パッケージ名を抽出します。-nそして、JSON出力.../pから一致する部分のみをjq出力するように指示します。次に、このパッケージ名のリストをwhileループに読み込みます。
RES引用符で囲まれたパッケージ名の出現回数です。現在はimport/ require... 'package'/ "package"です。それはほとんどの場合に仕事をします。
次に、結果行の数を数え、結果を出力します。
警告:
tsconfig.json(例:ファイル(libオプション))grepのみ手動でする必要が^USEDありUNUSEDます。この目的のために、以下のnpmモジュールを使用できます。
ここでの答えの多くは、未使用のアイテムを見つける方法です。
自動的に削除したかった。
このノードプロジェクトをインストールします。
$ npm install -g typescript tslint tslint-etc
ルートディレクトリで、新しいファイルtslint-imports.jsonを追加します。
{
"extends": [
"tslint-etc"
],
"rules": {
"no-unused-declaration": true
}
}
あなた自身の責任でこれを実行し、バックアップを作成してください:)
$ tslint --config tslint-imports.json --fix --project .
npx depcheck --json | jq '.dependencies[]' | xargs -L1 npm rm