package.jsonにないパッケージのnode_modulesフォルダーをクリーンアップする方法は?


338

インストールするモジュールをnpm install探すプロジェクトパッケージをインストールするとしますpackage.json。しばらくすると、特定のモジュールは必要ないことがわかり、その依存関係をから削除しpackage.jsonます。次に、他のいくつかのモジュールを削除します。これらのモジュールpackage.jsonは不要になり、他のモジュールが代替に置き換えられたためです。

次に、node_modulesフォルダをクリーンアップして、にリストされているモジュールのみpackage.jsonがそこに残り、残りが移動するようにしnpm cleanます。私はそれらを手動で削除できることを知っていますが、そのために砂糖機能を使用するための素晴らしい準備をしたいと思います。

回答:


407

あなたが探していると思います npm prune

npm prune [<name> [<name ...]]

このコマンドは、「余分な」パッケージを削除します。パッケージ名を指定すると、指定した名前のいずれかに一致するパッケージのみが削除されます。

無関係なパッケージとは、親パッケージの依存関係リストにリストされていないパッケージです。

ドキュメントを参照してください:https : //docs.npmjs.com/cli/prune


1
私の知る限り、新しいNPMバージョンでは、すべての依存関係はnode_modules以前とは異なり、ルートフォルダーにあります。各依存関係には、独自のnode_modulesフォルダーに独自の依存関係がインストールされていました。同じ依存関係の無数のコピーが...そうnpm prune、これは考慮し?これらの深い依存関係はpackage.jsonプロジェクトのメインに書かれていないためです。pruneは再帰的に参照する必要があります。
vsync

2
@vsync重複の削減は、npm dedupe docs.npmjs.com/cli/dedupeコマンドで実現されます。依存関係をツリーの上に移動することにより、ノードツリーを単純化しようとします。
knaos

私のNPM pruneは、企業リポジトリに何かが含まれていると、通常はめちゃくちゃになっているものを削除できないことに気付きました。次に、rm-rfを実行する必要があります。「一気に一撃ですべてを一度にすべて再取得する」コマンドがあるといいですね
ggb667

209

node_modules /フォルダーを削除してから、package.jsonから依存関係を再インストールできます。

rm -rf node_modules/
npm install

これにより、現在のフォルダーにインストールされているすべてのパッケージが消去され、package.jsonからの依存関係のみがインストールされます。依存関係が以前にインストールされている場合、npmはキャッシュされたバージョンを使用しようとし、依存関係の2回目のダウンロードを回避します。


4
はい、私はこの方法を使用できることを知っていますが、なぜこれ以上エレガントな解決策がないのか知りたいです。
セルゲイバシャロフ2014年

フォルダーを削除する以外にnode_modulesを削除するnpmコマンドは本当にありませんか?
Anders 14

4
Windowsプラットフォームでは、Explorerまたはコマンドラインを介してnode_modulesを削除するときに失敗します(一部のモジュールへのパスが256より長いため)。よりクリーンな方法でそれを行うには、npmコマンドが必要です。
Ravi Kumar

9
またはrmdir node_modules /s /qWindowsで使用します。superuser.com/a/179661/440976
ウェドニーユーリ

5
私はこの回答には非常に重要なポイントが欠けていると思います:トラフィックに制約されており(つまり、モバイルのようにメガバイト単位の有料接続が高価で)、多くのモジュールがある場合、これはコストがかかる可能性がありますがpruneオプションインターネット接続が必要です。
Ivan Kolmychek 2016

102

フォルダがネストされているため、名前が長すぎるため、Windowsはフォルダを削除できません。これを解決するには、RimRafをインストールします。

npm install rimraf -g

rimraf node_modules

8
または単にrm -rf node_modules
kappaallday

16
rm -rf node_modulesWindowsでは機能しません。このソリューションを参照してください。superuser.com/a/179661/440976
Wédneyユーリ

1
win7 x64 rimrafは、PowerShellを介してうまく機能しました。ありがとう
相対

CMDによるWindows 10 64ビット向けの最適なソリューション
Matt Cromwell

rm -rf node_modulesはWindows 10では機能しませんでしたが、rimrafは機能しました
ssmsnet

24

実行するだけ

rm -r node_modules

実際、これで任意のフォルダを削除できます。

rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDeleteのように。

gitbashを開いてフォルダのルートに移動し、このコマンドを実行するだけです

これがお役に立てば幸いです。


2
。仕事、私は「許可が拒否されました」エラー(使用gitbash取得していません
drake035

3
gitbashを管理者モードで開きます。私はそれが役立つと思います。またはフォルダーのアクセス許可レベルの設定を変更する
Ajay Kotnala 2017

3
これにより、すべてのパッケージが削除されます。OPは、「package_jsonにリストされているモジュールのみが存在するようにnode_modulesフォルダーをクリーンアップしたい」と明言しています。
ボアズ-モニカを復活させる

その場合、私の友達は単に "npm uninstall package_name"または--saveとして実行して、package.jsonファイルからもエントリを削除することができます。npm uninstall package_name(パッケージを削除)npm uninstall package_name --save(パッケージjsonの依存関係からパッケージを削除してエントリを削除)npm uninstall package_name --save-dev(パッケージjsonのdevdependenciesからエントリを削除)
Ajay Kotnala

22

最初にrimrafをグローバルにインストールする

npm install rimraf -g

node_modulesフォルダーのcmdを使用してパスに移動し、以下のコマンドを適用します

rimraf node_modules

良い答えですが、他のパッケージをアンインストールするパッケージをインストールすることは良い考えではありません。npm prune理想的なソリューションです。
Binayak Gouri Shankar

はい。ただし、プロジェクトからnode_moduleフォルダーを削除する場合は、これが最も簡単な方法です。
Ankit Parmar


9

バージョン6.5.0以降、npmはclean-installすべてのパッケージをハードリフレッシュするコマンドをサポートします


1
これはまさに私が必要としたものです。ノードを更新すると、最初に発生するのは「 'npm install'を実行してから環境を変更したようです」です。私はコンソールですでにてるので、それだけなど最初のフォルダを削除いじりではなく、クリーンインストールを行うために最も簡単です
ジャロッド・マクガイア

3

package.json内に数行追加しました:

"scripts": {
  ...
  "clean": "rmdir /s /q node_modules",
  "reinstall": "npm run clean && npm install",
  "rebuild": "npm run clean && npm install && rmdir /s /q dist && npm run build --prod",
  ...
}

あなただけにしたいclean場合は、これrimraf node_modulesまたはを使用できますrm -rf node_modules

うまくいきます



1

それについて私が見つけた最高の記事はこれです:https : //trilon.io/blog/how-to-delete-all-nodemodules-recursively

すべてコンソールから、どのフォルダポイントからでも簡単に実行できます。

しかし、記事の要約として、このコマンドnode_moduleは、異なるプロジェクトで見つかった各フォルダーのサイズを見つけます。

find . -name "node_modules" -type d -prune -print | xargs du -chs

そして実際にそれらを削除するには:

find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;

記事には、Windowsシェルの手順も含まれています。


0

package-lock.jsonで不要なパッケージを削除/編集します(パッケージ名は依存関係とdevDependenciesに書き込まれます)。

npm install


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.