yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

「npm uninstall all」みたいなコマンドが無かったのでスクリプトを書いた話

2021-02-09

参考:npm list でのエラー

「npm list」をした時に、「npm ERR! extraneous: …」のようなエラーが多発するが、
多すぎて「package.json」を書き直すのも面倒なので、
「いっそのこと全部アンインストールしよう」と思ったが、
「npm uninstall all」みたいなコマンドが無かったのでスクリプトを書いた話

スクリプトは以下
「npm ls –depth=0」で出てきたパッケージリストを成形して、
「npm rm」コマンドに渡して削除している

 
#!/bin/zsh
npm ls --depth=0 > npmlist.txt
sed -i -e '1d' npmlist.txt
sed -i e 's/^....//g' npmlist.txt
sed -i -e 's/\^//g' npmlist.txt
sed -i -e 's/UNMET PEER DEPENDENCY //g' npmlist.txt
sed -i -e 's/>//g' npmlist.txt
sed -i -e 's/=//g' npmlist.txt
sed -i -e 's/@[0-9].*//g' npmlist.txt
nlist=$(sed -e :loop -e 'N; $!b loop' -e 's/\n/ /g' npmlist.txt)
npm rm ${nlist}

※「npm ls」で出てきた結果をいっぺんに消せなかったので、「-depth=0」を追加しています
※ほとんど網羅していると思いますが、一部消えないパッケージがあったらごめんなさい、手動で削除してください

「npmlist.sh」というファイル名で作成したとすると、実行は以下コマンドで。
何回か回すと全部削除できる

sh npmlist.sh

これで全部無くなった、スッキリ

% npm list
/Users/yoshi
└── (empty)

スクリプトを回す過程でできた余計なファイルは手動で削除ください
(自動削除にすると怖いので)

rm npmlist.txt*

以上。