web-dev-qa-db-ja.com

package.json(NPM)にリストされているすべての依存関係をアンインストールするにはどうすればよいですか?

Package.jsonファイルをアプリケーションルートで定義し、npm install -gを実行すると、package.jsonで定義されたすべての依存関係がインストールされます。

ただし、これは逆には機能しないようです。

アプリケーションルートでnpm uninstall -gを実行すると、エラーがスローされ、パッケージ名を渡すように要求されます。

これは、インストールした同じパッケージもアンインストールするべきではありませんか?

私は何か間違っていますか?

87
qodeninja

Bashを使用している場合は、package.jsonファイルがあるフォルダーに切り替えて、次を実行します。

for package in `ls node_modules`; do npm uninstall $package; done;

グローバルにインストールされたパッケージの場合は、%appdata%/npmフォルダーに切り替え(Windowsの場合)、同じコマンドを実行します。

EDIT:このコマンドはnpm 3.3.6(Node 5.0)で中断します。 .bashrcファイルでnpm_uninstall_allにマップした次のBashコマンドを使用しています:

npm uninstall `ls -1 node_modules | tr '/\n' ' '`

ボーナスを追加しましたか?それはずっと速いです!

https://github.com/npm/npm/issues/10187

149
jedmao

これは私のために働いた:

コマンドプロンプトまたはgitbashをプロジェクトのnode_modulesフォルダーに入力して、次を実行します。

npm uninstall *

そのプロジェクトのすべてのローカルパッケージを削除しました。

60
Druubacca

Windowsの場合はnode_modules dirに移動し、これをpowershellで実行します

npm uninstall (Get-ChildItem).Name 
34
Sameer

最近、次のようにすべての開発依存関係をアンインストールできるノードコマンドを見つけました。

npm Prune --production

前述したように、このコマンドは開発依存パッケージのみをアンインストールします。少なくとも、手動で行う必要はありませんでした。

21
chalo

実際、それを行うオプションはありません。package.jsonからパッケージをアンインストールする場合は、npm lsが依存する同じディレクトリでpackage.jsonを実行し、削除するパッケージにnpm uninstall <name>またはnpm rm <name>を使用します。

6
Gntem

Windowsユーザー向けのヒント:node_modules親ディレクトリ内から次のPowerShellコマンドを実行します。

ls .\node_modules | % {npm uninstall $_}
5
y0n1
// forcibly remove and reinstall all package dependencies
ren package.json package.json-bak
echo {} > package.json
npm Prune
del package.json
ren package.json-bak package.json
npm i

これは基本的に、偽の空のpackage.jsonを作成し、npm Pruneを呼び出してnode_modulesのすべてを削除し、元のpackage.jsonを復元して、すべてを再インストールします。

他のソリューションのいくつかはよりエレガントかもしれませんが、これはより高速で網羅的であると思われます。他のスレッドでは、node_modulesディレクトリを削除することを提案している人もいますが、少なくともWindowsの場合、binディレクトリが見つからないため、npmはその後窒息します。 Linuxではおそらく正しく復元されますが、Windowsでは復元されません。

3
meem
  1. package.jsonから不要な依存関係を削除します
  2. npm i

npm i」は、欠落しているdepsをインストールするだけでなく、package.jsonに一致するようにnode_modulesを更新します

0
Misaka_0x447f

そのためにループを実行する必要はありません。

単一のコマンドのみを使用して、すべてのnode_modulesを削除できます。

npm uninstall `ls -1 node_modules | tr '/\n' ' '`
0
VIKAS KOHLI

Powershellユーザー:foreach($package in ls node_modules){npm uninstall $package}

ありがとう@JustMailer

0