คำสั่งให้ลบโมดูล NPM ทั้งหมดทั่วโลก?


381

มีคำสั่งให้ลบโมดูล npm โกลบอลทั้งหมดหรือไม่? ถ้าไม่คุณแนะนำอะไร

คำตอบ:


501

คำสั่งต่อไปนี้ลบโมดูลโกลบอล npm ทั้งหมด หมายเหตุ: สิ่งนี้ไม่ทำงานบน Windows สำหรับรุ่นของ Windows ที่ทำงานให้ดูคำตอบโอลีฟเบนเน็ตต์

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm

นี่คือวิธีการทำงาน:

  • npm ls -gp --depth=0แสดงรายการโมดูลระดับบนสุดทั้งหมด (ดูเอกสารประกอบ cli สำหรับ ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'พิมพ์โมดูลทั้งหมดที่ไม่ใช่ npm จริง ๆ (ไม่ได้ลงท้ายด้วย/npm)
  • xargs npm -g rm ลบโมดูลทั้งหมดที่อยู่เหนือไพพ์ก่อนหน้า

3
ไม่ต้องเป็น awk golf guy ซึ่งสามารถทำได้ในคำสั่ง awk เดียวโดยไม่ต้อง grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' คำอธิบาย: แยกช่องว่างหรือ @, จับคู่เฉพาะบรรทัดด้วย @, ชื่อโมดูลจะเป็นคู่ที่สองถึงครั้งสุดท้าย ( $(NF-1)) ดังนั้นพิมพ์เท่านั้น ถ้าไม่ใช่npm
Fotios

28
คำเตือน: เวอร์ชันใหม่ไม่ได้กรองโมดูล npm คุณไม่ต้องการลบอันนั้น
neverfox

9
ฉันยังรันเวอร์ชันใหม่โดยไม่อ่านความคิดเห็น อ่านความคิดเห็นเสมอ นี่คือวิธีการคืนค่า NPM: curl npmjs.org/install.sh | sh
แจ็คอัลลัน

12
ว้าว. NPM ไม่ทำให้การถอนการติดตั้งเป็นเรื่องง่าย ด้วยบันเดิลและอัญมณีมันเป็นเรื่องเล็กน้อยที่จะถอนการติดตั้งทุกสิ่งความจริงที่ว่าคุณต้องใช้ grep และนั่นคือการออกแบบที่น่ากลัว มีวิธีที่ง่ายกว่านี้หรือไม่? ใครบ้างที่จำรหัสที่จำเป็นในคำตอบได้
ไบรอันเรียน

15
@neverfox และอื่น ๆ : คงที่แล้วตัวเองจะไม่ถูกลบทิ้งอีกต่อไป ขออภัยในความไม่สะดวก
Kai Sternad

268

สำหรับผู้ที่ใช้Windowsวิธีที่ง่ายที่สุดในการลบแพ็คเกจ npm ที่ติดตั้งทั่วโลกทั้งหมดคือการลบเนื้อหาของ:

C:\Users\username\AppData\Roaming\npm

คุณสามารถไปที่นั่นได้อย่างรวดเร็วด้วยการพิมพ์%appdata%/npmทั้งใน explorer, run prompt, หรือจากเมนู start


5
ขอบคุณสำหรับอันนี้สิ่งที่เกี่ยวกับ npm-cache ฉันควรลบที่ได้หรือไม่
Neil

2
อย่าลบโฟลเดอร์ npm หากอยู่ในนั้น
AutomatedMike

ในรุ่นที่ใหม่กว่า NPM นี้ดูเหมือนว่าการย้ายไปได้โดยไม่ต้อง%USERPROFILE%\AppData\npm roaming
Liam

1
ฉันกำลังติดตั้งแพ็กเกจทั้งหมดใหม่ฉันพบข้อผิดพลาดของ EINTEGRITY เมื่อทำงานnpm installอีกครั้ง ฉันต้องลบpackage-lock.jsonไฟล์ด้วย
ToastyMallows

สำหรับผู้ที่อยู่ใน windows โดยใช้สกู๊ปเส้นทางคือ: C: \ Users \ ชื่อผู้ใช้ \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra

176

ฉันลองใช้วิธีแก้ปัญหาของKai Sternadแต่ดูเหมือนไม่สมบูรณ์สำหรับฉัน มีสัญลักษณ์พิเศษมากมายที่เหลืออยู่หลังจากawkต้นไม้สุดท้ายออกมาเอง

ดังนั้นฉันจึงคิดวิธีแก้ปัญหาของKai Sternadขึ้นมาเอง(ด้วยความช่วยเหลือเล็กน้อยจากแนวคิดของแคชเมียร์ ):

npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm

npm ls -gp --depth=0แสดงรายการทั้งหมดทั่วโลกที่ติดตั้งโมดูล NPM ในparsableรูปแบบ:

/home/leonid/local/lib
/home/leonid/local/lib/node_modules/bower
/home/leonid/local/lib/node_modules/coffee-script
...

awk -F/node_modules/ '{print $2}' แยกชื่อโมดูลจากพา ธ สร้างรายการของโมดูลที่ติดตั้งแบบโกลบอลทั้งหมด

grep -vE '^(npm|)$' ลบ npm เองและบรรทัดว่าง

xargs -r npm -g rmเรียกใช้npm -g rmสำหรับแต่ละโมดูลในรายการ

เช่นเดียวกับวิธีแก้ปัญหาของKai Sternadมันจะทำงานภายใต้ * ระวัง


1
ไฟล์เหล่านี้ถูกเก็บไว้ที่ไหนฉันเกลียดวิธีนี้ ไม่ได้มีเพียงแพคเกจระดับโลก
Evan Carroll

2
@EvanCarroll Nope ไม่มีไฟล์ดังกล่าว แต่npmติดตั้งโมดูลโกลบอลทั้งหมดไปยังไดเรกทอรีเดียวกัน ตำแหน่งที่แน่นอนอาจแตกต่างกัน /usr/local/lib/node_modulesแต่โดยทั่วไปแล้วมันเป็น
Leonid Beschastny

3
เพียงแค่ FYI อันนี้จะลบ npm
BrDaHa

11
คำสั่งนี้ทำงานบน OSX และไม่ลบ npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate

2
คำสั่งนี้ไม่สามารถจัดการแพ็คเกจที่กำหนดขอบเขต (เช่น@angular/cli) ฉันเพิ่มตัวจับคู่อีกตัวawkและคำสั่งที่ใช้งานได้สำหรับฉันจะเป็นดังนี้:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
แจ็คคิว

64
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g

ทำงานให้ฉัน

  • sudo npm list -g --depth=0. แสดงรายการติดตั้งระดับบนสุดทั้งหมด
  • awk -F ' ' '{print $2}' กำจัด├──
  • awk -F '@' '{print $1}' รับส่วนก่อน '@'
  • sudo xargs npm remove -g ลบแพคเกจทั่วโลก

รุ่นนี้ทำงานได้ดีที่สุดสำหรับฉัน ณ วันที่ 14 มิถุนายน การเพิ่มเพียงอย่างเดียวอาจเป็นการกรองการพึ่งพา "UNMET" จากรายการ แต่นั่นไม่สำคัญเช่นเดียวกับnpm remove UNMETNOOP
kangax

4
จะเพิ่มgrep -v npmเพื่อให้ตัวเองไม่ได้ลบsudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
npm

npm ของคุณ!
ทุก

26

สำหรับผู้ที่ใช้Powershell :

npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }

วิธีล้างแคช:

npm cache clear

22

เพียงเปลี่ยนเป็น%appdata%/npmไดเรกทอรีของคุณและเรียกใช้สิ่งต่อไปนี้ ...

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

แก้ไข: คำสั่งนี้หยุดพักด้วย npm 3.3.6 (โหนด 5.0) ตอนนี้ฉันใช้คำสั่ง Bash ต่อไปนี้ซึ่งฉันได้แม็พกับ npm_uninstall_all ในไฟล์. bashrc ของฉัน:

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

โบนัสที่เพิ่มเข้ามา? มันเร็วขึ้น!

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

คุณถอนการติดตั้งการอ้างอิงทั้งหมดที่ระบุใน package.json (NPM) ได้อย่างไร


รักสิ่งนี้. เร็วขึ้นและง่ายขึ้น :) ฉันเพิ่งใช้ grep -v npmและnก่อนtr
apnerve

16

ใน windows ไปที่ไดเรกทอรี "C: \ Users {ชื่อผู้ใช้} \ AppData \ Roaming" และลบโฟลเดอร์ npm ด้วยตนเอง


1
สิ่งนี้ตรงไปตรงมา / มีประโยชน์สำหรับเราบน Windows ที่นี่ ขอบคุณ
rob2d

14

หากคุณต้องการลบแพ็กเกจทั้งหมดที่คุณติดตั้งคุณสามารถใช้npm -g lsคำสั่งเพื่อค้นหาแพ็กเกจแล้วnpm -g rmลบออก


7

หากคุณติดตั้งjqไว้คุณสามารถไปได้แม้ไม่มี grep / awk / sed:

npm ls -g --json --depth=0 |
  jq -r '.dependencies|keys-["npm"]|join("\n")' |
  xargs npm rm -g

บน Debian และที่ได้รับคุณสามารถติดตั้งjqด้วย:

sudo apt-get install jq

นี่คือคำตอบที่มั่นคงพร้อมกับjsonรูปแบบเกี่ยวกับ
Richard Ayotte

ถ้าต้องการ sudo:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger

5

ระบบปฏิบัติการไม่ได้ระบุโดย OP สำหรับWindowsสคริปต์นี้สามารถใช้เพื่อดักจับโลคัลและโมดูลส่วนกลางและแคชของผู้ใช้

ฉันสังเกตเห็นบนlinuxว่ารูทส่วนกลางนั้นเป็นระบบโกลบอลอย่างแท้จริงแทนที่จะเป็นผู้ใช้ที่กำหนด ดังนั้นการลบรูทโกลบอลอาจไม่ใช่ความคิดที่ดีสำหรับระบบที่ใช้ร่วมกัน นอกจากนั้นฉันสามารถพอร์ตสคริปต์เพื่อทุบตีหากสนใจ

สำหรับWindowsให้บันทึกเป็นไฟล์ cmd เพื่อเรียกใช้

@ECHO OFF
SETLOCAL EnableDelayedExpansion 
SETLOCAL EnableExtensions

SET /A ecode=0

:: verify
SET /P conf="About to delete all global and local npm modules and clear the npm cache. Continue (y/[n])?
IF /I NOT "%conf%"=="y" (
  ECHO operation aborted
  SET /A ecode=!ecode!+1
  GOTO END
)

:: wipe global and local npm root
FOR %%a IN ("" "-g") DO (

  :: get root path into var
  SET cmd=npm root %%~a
  FOR /f "usebackq tokens=*" %%r IN (`!cmd!`) DO (SET npm_root=%%r)

  :: paranoid
  ECHO validating module path "!npm_root!"
  IF "!npm_root:~-12!"=="node_modules" (
    IF NOT EXIST "!npm_root!" (
      ECHO npm root does not exist "!npm_root!"
    ) ELSE (
      ECHO deleting "!npm_root!" ...
      :: delete
      RMDIR /S /Q "!npm_root!"
    )
  ) ELSE (
      ECHO suspicious npm root, ignoring "!npm_root!"
  )
)

:: clear the cache
ECHO clearing the npm cache ...
call npm cache clean

:: done
ECHO done

:END

ENDLOCAL & EXIT /b %ecode%

3

ใช้รหัสนี้เพื่อถอนการติดตั้งแพ็คเกจใด ๆ :

npm rm -g <package_name>

1
คำถามนี้บอกอย่างชัดเจนว่า ALL ไม่ใช่ชื่อแพ็คเกจเฉพาะ
Polv

2

คุณทำได้ดีมาก นี่คือการรวมคำแนะนำในรหัสบรรทัดเดียว

npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`

ต่างกันอย่างไร ถอนการติดตั้งจะทำในคำสั่งเดียวเช่น:npm rm -g *** *** ***


2

คุณสามารถค้นหาแพคเกจ npm ที่ติดตั้งทั้งหมดของคุณได้ที่:

C:\Users\username\AppData\Roaming\npm

และลบเนื้อหาของ npm ที่คุณต้องการลบ

หาก AppData ไม่แสดงขึ้นแสดงว่ามันถูกซ่อนอยู่และคุณสามารถไปที่ View in file explorer และตรวจสอบรายการที่ซ่อนอยู่จากนั้นคุณจะเห็นโฟลเดอร์ที่ซ่อนอยู่ทั้งหมด


1

ถ้าคุณอยู่บน windows และต้องการลบ / ถอนการติดตั้ง node_modules ทั้งหมดคุณต้องทำตามขั้นตอนต่อไปนี้

  1. ไปที่พรอมต์คำสั่งของ windows
  2. นำทางไปยังไดเร็กทอรี node_modules ( ไม่อยู่ในโฟลเดอร์ node_modules )
  3. พิมพ์คำสั่งด้านล่างและให้มันเป็นเวลา 1-2 นาทีมันจะถอนการติดตั้งไดเรกทอรีทั้งหมดภายใน node_module

     rmdir /s /q node_modules

หวังว่านี้จะช่วยให้ใครบางคนบน windows


1

หากคุณมี Intellij Webstorm คุณสามารถใช้โปรแกรมจัดการแพ็คเกจกราฟิกในตัว

เปิดเป็น root และสร้างโครงการ emtpy ไปที่

ไฟล์> การตั้งค่า> ภาษาและกรอบงาน> Node.js และ NPM

ที่นั่นคุณจะเห็นแพ็คเกจที่ติดตั้งทั้งหมด การถอนการติดตั้งนั้นง่ายมากคุณสามารถเลือกและยกเลิกการเลือกแพ็คเกจใด ๆ ที่คุณต้องการถอนการติดตั้ง Ctrl + a woks เช่นกัน


1

สำหรับ yarn global

nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add

หรือถ้าคุณไม่สนใจสิ่งที่อยู่ข้างใน package.json

echo {} >  ~/.config/yarn/global/package.json && yarn global add

สิ่งนี้ควรนำไปใช้กับ NPM ด้วย แต่ฉันไม่แน่ใจว่าที่เก็บ NPM แบบโกลบอล



0

เนื่องจากนี่เป็นคำตอบอันดับต้น ๆ ในการค้นหาฉันโพสต์ข้อความนี้ที่นี่เพราะเป็นวิธีการแก้ปัญหาที่ฉันใช้ในอดีตเพื่อล้างแล็ปท็อปที่เปลี่ยนคอมพิวเตอร์

cd ~/Documents # or where you keep your projects
find . -name "node_modules" -exec rm -rf '{}' +

แหล่งที่มา: https://winsmarts.com/delete-all-node-modules-folders-recursively-on-windows-edcc9a9c079e


0

นี่เป็นทางออกที่หรูหรากว่าที่ฉันพยายามทำในที่ที่ฉันปล่อยให้ npm ทำงานทุกอย่างให้ฉัน

# On Linux Mint 19.1 Cinnamon
# First navigate to where your global packages are installed.

$ npm root # returns /where/your/node_modules/folder/is
$ cd /where/your/node_modules/folder/is # i.e for me it was cd /home/user/.npm-packages/lib/node_modules

จากนั้นถ้าคุณทำnpm uninstallหรือnpm removeโมดูลเหล่านี้จะได้รับการปฏิบัติราวกับว่าพวกเขาเป็นปกติของโครงการ มันยังสร้างไฟล์ package-lock.json เมื่อเสร็จสิ้น:

$ npm remove <package-name> # you may need sudo if it was installed using sudo  


-5

เพียงใส่ในคอนโซลของคุณ:

sudo npm list -g --depth = 0 | awk -F '' '{พิมพ์ $ 2}' | awk -F '@' '{พิมพ์ $ 1}' | sudo xargs npm ลบ -g

มันเหมาะกับฉัน ...


1
copt ที่แน่นอนของการแก้ปัญหาที่กล่าวถึงแล้วที่นี่ในหน้าเดียวกันนี้
ivarni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.