ローカルディレクトリに複数のnpmプロジェクトを保存しています。ここで、node_modules
フォルダなしでプロジェクトのバックアップを取りたいと思います。これは、多くのスペースを使用し、を使用していつでも取得できるためnpm install
です。
そのため、コマンドラインインターフェイスを使用して、指定したパスからすべてのnode_modulesフォルダーを再帰的に削除するソリューションが必要です。どんな提案/助けも非常に高く評価されます。
回答:
削除するディレクトリのリストを印刷します。
find . -name 'node_modules' -type d -prune
現在の作業ディレクトリからディレクトリを削除します。
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
または、段階的な削除にtrash(brew install trash
)を使用することもできます。
find . -name node_modules -type d -prune -exec trash {} +
/node_modules/gulp-server-livereload/node_modules: Directory not empty
は多くの「内部」node_modulesフォルダーに入ります。これを回避する方法は?
'{}' +
何ですか?
{}
は、find
見つかったファイルパスに置き換わるプレースホルダーです。それぞれに対して実行するのではなく、すべてのファイルパスを単一のコマンドに追加する+
ように指示find
しますrm
。
受け入れられた答えを改善し、
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
コマンドが非常に長い時間実行されてすべてのフォルダーをフェッチしてから削除コマンドを実行し、コマンドを再開可能にし\;
、実行中のコマンドの進行状況-print
を確認するには、削除されているディレクトリを確認することをお勧めします。
注:最初cd
にルートディレクトリに移動してからコマンドを実行するか、find .
使用する代わりにfind {project_directory}
フォルダを1つずつ削除するには
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;
フォルダを1つずつ削除して、削除するフォルダを印刷するには
find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
編集:
これをインタラクティブに行う方法が好きな人は、@ jeckepの回答を参照して、プルーニングするディレクトリでこれを実行してください。
npx npkill
-prune
重要な最適化です。node_module
(ネストされたnode_modulesを探すために)ディレクトリに再帰しない場合があります