Package.jsonファイルをアプリケーションルートで定義し、npm install -g
を実行すると、package.jsonで定義されたすべての依存関係がインストールされます。
ただし、これは逆には機能しないようです。
アプリケーションルートでnpm uninstall -g
を実行すると、エラーがスローされ、パッケージ名を渡すように要求されます。
これは、インストールした同じパッケージもアンインストールするべきではありませんか?
私は何か間違っていますか?
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' ' '`
ボーナスを追加しましたか?それはずっと速いです!
これは私のために働いた:
コマンドプロンプトまたはgitbashをプロジェクトのnode_modulesフォルダーに入力して、次を実行します。
npm uninstall *
そのプロジェクトのすべてのローカルパッケージを削除しました。
Windowsの場合はnode_modules dirに移動し、これをpowershellで実行します
npm uninstall (Get-ChildItem).Name
最近、次のようにすべての開発依存関係をアンインストールできるノードコマンドを見つけました。
npm Prune --production
前述したように、このコマンドは開発依存パッケージのみをアンインストールします。少なくとも、手動で行う必要はありませんでした。
実際、それを行うオプションはありません。package.json
からパッケージをアンインストールする場合は、npm ls
が依存する同じディレクトリでpackage.json
を実行し、削除するパッケージにnpm uninstall <name>
またはnpm rm <name>
を使用します。
Windowsユーザー向けのヒント:node_modules
親ディレクトリ内から次のPowerShellコマンドを実行します。
ls .\node_modules | % {npm uninstall $_}
// 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では復元されません。
npm i
「npm i
」は、欠落しているdepsをインストールするだけでなく、package.jsonに一致するようにnode_modulesを更新します
そのためにループを実行する必要はありません。
単一のコマンドのみを使用して、すべてのnode_modulesを削除できます。
npm uninstall `ls -1 node_modules | tr '/\n' ' '`
Powershellユーザー:foreach($package in ls node_modules){npm uninstall $package}
ありがとう@JustMailer