Lệnh loại bỏ tất cả các mô-đun npm trên toàn cầu?


381

Có một lệnh để loại bỏ tất cả các mô-đun npm toàn cầu? Nếu không, bạn đề nghị gì?

Câu trả lời:


501

Lệnh sau loại bỏ tất cả các mô-đun npm toàn cầu. Lưu ý: điều này không hoạt động trên Windows. Đối với phiên bản Windows đang hoạt động, xem Câu trả lời của Ollie Bennett .

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

Đây là cách nó làm việc:

  • npm ls -gp --depth=0liệt kê tất cả các mô-đun cấp cao nhất toàn cầu (xem tài liệu cli cho ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'in tất cả các mô-đun không thực sự là npm (không kết thúc bằng /npm)
  • xargs npm -g rm loại bỏ tất cả các mô-đun trên toàn cầu đi qua đường ống trước đó

3
Không phải là người chơi golf awk, điều này có thể được thực hiện trong một lệnh awk duy nhất mà không có grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Giải thích: chia nhỏ trên dấu cách hoặc @, chỉ khớp các dòng với @, tên mô-đun sẽ là lần thứ hai để khớp cuối cùng ( $(NF-1)), vì vậy chỉ in nếu không phải vậynpm
Fotios

28
Cảnh báo: phiên bản mới không lọc mô-đun npm. Bạn không muốn xóa cái đó.
neverfox

9
Tôi cũng chạy phiên bản mới mà không đọc các bình luận. LUÔN LUÔN ĐỌC Ý KIẾN. Đây là cách khôi phục NPM: curl npmjs.org/install.sh | sh
Jack Allan

12
Ồ NPM không làm cho nó dễ dàng để gỡ cài đặt mọi thứ. Với gói và đá quý, việc gỡ cài đặt mọi thứ là chuyện nhỏ, thực tế là bạn phải sử dụng grep và đó là một thiết kế khủng khiếp. Có cách nào đơn giản hơn để làm điều này? Ai thực sự nhớ mã yêu cầu trong câu trả lời?
Brian thân mến

15
@neverfox và những người khác: Đã sửa, npm không còn bị xóa nữa. Xin lỗi vì sự bất tiện này
Kai Sternad 04/05/2016

268

Đối với những người sử dụng Windows , cách dễ nhất để xóa tất cả các gói npm được cài đặt trên toàn cầu là xóa nội dung của:

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

Bạn có thể đến đó nhanh chóng bằng cách nhập %appdata%/npmvào trình thám hiểm, dấu nhắc chạy hoặc từ menu bắt đầu.


5
Cảm ơn vì cái này, còn npm-cache, tôi cũng nên xóa cái đó đi?
Neil

2
không xóa thư mục npm nếu nó ở đó
AutomatedMike

Trong các phiên bản sau của npm, điều này dường như được chuyển sang %USERPROFILE%\AppData\npmmà không có roaming.
Liam

1
Tôi đã cài đặt lại tất cả các gói, tôi gặp phải lỗi EINTEGRITY khi chạy npm installlại. Tôi đã phải xóa package-lock.jsontập tin của tôi là tốt.
ToastyMallows

đối với những người trong windows sử dụng scoop, đường dẫn là: C: \ Users \ username \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra

176

Tôi đã thử giải pháp của Kai Sternad nhưng nó dường như không hoàn hảo đối với tôi. Có rất nhiều biểu tượng đặc biệt còn sót lại sau lần cuối cùng awktừ chính cây deps.

Vì vậy, tôi đã đưa ra cách sửa đổi của riêng mình về giải pháp của Kai Sternad (với một chút trợ giúp từ ý tưởng của cashmere ):

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

npm ls -gp --depth=0liệt kê tất cả các mô-đun npm được cài đặt trên toàn cầu ở định dạng có thể phân tích cú pháp :

/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}' trích xuất tên mô-đun từ các đường dẫn, tạo thành danh sách tất cả các mô-đun được cài đặt trên toàn cầu.

grep -vE '^(npm|)$' loại bỏ npm chính nó và dòng trống.

xargs -r npm -g rm các cuộc gọi npm -g rm cho mỗi mô-đun trong danh sách.

Giống như giải pháp của Kai Sternad , nó sẽ chỉ hoạt động dưới * nix.


1
Những tập tin này được lưu trữ ở đâu, tôi ghét phương pháp này. Không phải chỉ có một gói.j.j toàn cầu ở đâu đó sao?
Evan Carroll

2
@EvanCarroll Không, không có tệp nào như vậy, nhưng npmcài đặt tất cả các mô-đun toàn cầu của nó vào cùng một thư mục. Vị trí chính xác có thể khác nhau, nhưng thường là vậy /usr/local/lib/node_modules.
Leonid Beschastny

3
Chỉ cần FYI, cái này cũng loại bỏ
npm

11
Lệnh này hoạt động trên OSX và không xóa npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
npm

2
Lệnh này không thể xử lý gói phạm vi (như @angular/cli). Tôi thêm một công cụ đối sánh khác awkvà lệnh làm việc cho tôi trông như thế này:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
Jack Q

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

đã làm cho tôi

  • sudo npm list -g --depth=0. liệt kê tất cả các cấp cao nhất được cài đặt
  • awk -F ' ' '{print $2}' thoát khỏi ──
  • awk -F '@' '{print $1}' nhận phần trước '@'
  • sudo xargs npm remove -g loại bỏ gói trên toàn cầu

Phiên bản này hoạt động tốt nhất với tôi kể từ ngày 14 tháng 6. Sự bổ sung duy nhất có thể là lọc ra các phụ thuộc "UNMET" khỏi danh sách, nhưng điều đó không quan trọng, npm remove UNMETđơn giản là NOOP.
kangax

4
sẽ thêm grep -v npmđể bản thân sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
npm

nó đây rồi, npm của bạn!
Tất cả Іѕ Vаиітy

26

Đối với những người sử dụng Powershell :

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

Để xóa bộ nhớ cache:

npm cache clear

22

Chỉ cần chuyển vào %appdata%/npmthư mục của bạn và chạy ...

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

EDIT: Lệnh này ngắt với npm 3.3.6 (Nút 5.0). Bây giờ tôi đang sử dụng lệnh Bash sau, mà tôi đã ánh xạ tới npm_uninstall_all trong tệp .bashrc của mình:

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

Đã thêm tiền thưởng? đó là cách nhanh hơn!

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

Làm thế nào để bạn gỡ cài đặt tất cả các phụ thuộc được liệt kê trong pack.json (NPM)?


Thích cái này. Nhanh hơn và đơn giản :) Tôi chỉ sử dụng grep -v npmntrướctr
apnerve

16

trong cửa sổ, hãy chuyển đến thư mục "C: \ Users {username} \ AppData \ Roaming" và xóa thủ công thư mục npm


1
Điều này rất đơn giản / hữu ích cho chúng tôi trên Windows tại đây. Cảm ơn.
rob2d

14

Nếu bạn muốn xóa tất cả các gói mà bạn đã cài đặt, bạn có thể sử dụng npm -g lslệnh để tìm chúng, và sau đó npm -g rmloại bỏ chúng.


7

Nếu bạn đã cài đặt jq , bạn có thể đi ngay cả khi không có grep / awk / sed:

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

Trên Debian và dẫn xuất, bạn có thể cài đặt jq với:

sudo apt-get install jq

Đây là một câu trả lời chắc chắn với jsonphong cách apropos .
Richard Ayotte

Nếu sudo là bắt buộc thì:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger

5

Hệ điều hành không được chỉ định bởi OP. Đối với Windows , tập lệnh này có thể được sử dụng để khởi động các mô-đun và bộ đệm toàn cục bộ và cục bộ của người dùng.

Tôi nhận thấy trên linux rằng root toàn cầu thực sự là toàn cầu đối với hệ thống thay vì người dùng nhất định. Vì vậy, xóa gốc toàn cầu có thể không phải là một ý tưởng tốt cho một hệ thống chia sẻ. Điều đó sang một bên, tôi có thể chuyển tập lệnh sang bash nếu quan tâm.

Đối với Windows , lưu vào tệp cmd để chạy.

@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

Sử dụng mã này để gỡ cài đặt bất kỳ gói nào:

npm rm -g <package_name>

1
Câu hỏi nói rõ TẤT CẢ, không phải là một tên gói cụ thể.
Polv

2

Tất cả các bạn đã làm tốt công việc. Đây là gợi ý kết hợp trong một mã dòng.

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

Có gì khác nhau? Gỡ cài đặt sẽ được thực hiện trong một lệnh như:npm rm -g *** *** ***


2

Bạn có thể định vị tất cả các gói npm được cài đặt tại vị trí:

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

và xóa nội dung của npm mà bạn muốn xóa.

Nếu AppData không hiển thị, điều đó có nghĩa là nó bị ẩn và bạn có thể vào View in file explorer và kiểm tra các mục Hidden sau đó bạn có thể thấy tất cả các thư mục ẩn.


1

Vâng, nếu bạn đang ở trên windows và muốn xóa / gỡ cài đặt tất cả node_modules thì bạn cần thực hiện các bước sau.

  1. Đi đến dấu nhắc lệnh của windows
  2. Điều hướng đến thư mục node_modules ( Không nằm trong thư mục node_modules )
  3. Gõ lệnh dưới đây và cho nó trong 1-2 phút, nó sẽ gỡ cài đặt tất cả các thư mục bên trong node_module

     rmdir /s /q node_modules

Hy vọng điều này sẽ giúp một số người trên windows


1

nếu bạn có Intellij Webstorm, bạn có thể sử dụng trình quản lý gói đồ họa tích hợp.

mở nó dưới dạng root và tạo một dự án emtpy. đi đến

Tệp> Cài đặt> Ngôn ngữ và Khung> Node.js và NPM

ở đó bạn sẽ thấy tất cả các gói được cài đặt. Gỡ cài đặt rất dễ dàng, bạn có thể chọn và bỏ chọn bất kỳ gói nào bạn muốn gỡ cài đặt, Ctrl + một chảo.


1

Dành cho yarn global

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

Hoặc, nếu bạn không quan tâm đến những gì thực sự bên trong package.json

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

Điều này cũng áp dụng cho NPM, nhưng tôi không chắc chắn chính xác nơi NPM toàn cầu được lưu trữ.


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


0

Đây là một giải pháp tao nhã hơn mà tôi đã thử khi tôi để npm làm tất cả công việc cho tôi.

# 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

Sau đó, nếu bạn làm npm uninstallhoặc npm removecác mô-đun này sẽ được xử lý như thể chúng là các phụ thuộc bình thường của một dự án. Nó thậm chí còn tạo ra một tệp lock-lock.json khi hoàn thành:

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

-1

giải pháp sed

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g

-5

Chỉ cần đặt trong bảng điều khiển của bạn:

danh sách sudo npm -g --depth = 0. | awk -F '' '{in $ 2}' | awk -F '@' '{in $ 1}' | sudo xargs npm gỡ bỏ -g

Nó làm việc cho tôi ...


1
Copt chính xác của giải pháp đã được đề cập ở đây , trên cùng một trang này.
ivarni
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.