모든 npm 모듈을 전체적으로 제거하는 명령?


381

모든 전역 npm 모듈을 제거하는 명령이 있습니까? 그렇지 않다면 무엇을 제안합니까?

답변:


501

다음 명령은 모든 전역 npm 모듈을 제거합니다. 참고 : Windows에서는 작동하지 않습니다. 작동하는 Windows 버전은 Ollie Bennett 's Answer를 참조하십시오 .

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

작동 방식은 다음과 같습니다.

  • npm ls -gp --depth=0모든 글로벌 최상위 모듈을 나열합니다 ( ls에 대한 cli 설명서 참조 ).
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'실제로 npm 자체가 아닌 모든 모듈을 인쇄합니다 (로 끝나지 않음 /npm)
  • xargs npm -g rm 이전 파이프를 통해 온 모든 모듈을 전체적으로 제거

3
다음 AWK 골프 남자가 아니라, 이것은 그렙없이 하나의 awk 명령으로 수행 할 수 있습니다 awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' 설명 : 분할 공백이나에 @ 만에 라인을 일치 @, 모듈 이름 마지막 경기 (두 번째 것 $(NF-1)) 때문에, 단지 인쇄 그렇지 않다면npm
Fotios

28
경고 : 새 버전은 npm 모듈을 필터링하지 않습니다. 당신은 그 것을 제거하고 싶지 않습니다.
neverfox

9
또한 의견을 읽지 않고 새 버전을 실행했습니다. 항상 주석을 읽으십시오. 다음은 NPM을 복원하는 방법입니다. curl npmjs.org/install.sh | sh
Jack Allan

12
와. NPM은 쉽게 제거 할 수 없습니다. 번 들러와 보석을 사용하면 모든 것을 제거하는 것이 쉽지 않습니다. grep을 사용해야한다는 사실은 끔찍한 디자인입니다. 더 간단한 방법이 있습니까? 실제로 답변에 필요한 코드를 누가 기억합니까?
Brian 친애하는

15
@neverfox 및 기타 : 고정, npm 자체는 더 이상 제거되지 않습니다. 불편을 드려 죄송합니다
Kai Sternad 2016 년

268

Windows를 사용하는 사용자의 경우 전 세계적으로 설치된 모든 npm 패키지를 제거하는 가장 쉬운 방법은 다음 내용을 삭제하는 것입니다.

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

%appdata%/npm탐색기, 실행 프롬프트 또는 시작 메뉴에서 입력하여 신속하게 이동할 수 있습니다 .


5
이것에 감사드립니다. npm-cache는 어떻게 제거해야합니까?
Neil

2
npm 폴더가 있으면 삭제하지 마십시오
AutomatedMike

이후 버전의 npm %USERPROFILE%\AppData\npm에서는 roaming. 없이 이동 한 것으로 보입니다 .
Liam

1
모든 패키지를 다시 설치하고 npm install다시 실행할 때 EINTEGRITY 오류가 발생 했습니다. package-lock.json파일도 삭제해야했습니다 .
ToastyMallows

특종을 사용하여 Windows에있는 사람들을 위해, 경로는 C : \ 사용자 \ 사용자 이름 \ 특종 \ APPS \ nodejs \ 현재 \ 빈 \ node_modules
아리엘 미라

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 모듈을 구문 분석 가능한 형식 으로 나열 합니다.

/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 rmnpm -g rm목록에서 각 모듈을 호출 합니다.

Kai Sternad 의 솔루션 과 마찬가지로 * nix에서만 작동합니다.


1
이 파일들이 어디에 저장되어 있는가, 나는이 방법이 싫다. 어딘가에 전역 package.json이 있습니까?
Evan Carroll

2
@EvanCarroll 아니요, 그러한 파일은 없지만 npm모든 전역 모듈을 동일한 디렉토리에 설치합니다. 정확한 위치는 다를 수 있지만 일반적으로 /usr/local/lib/node_modules입니다.
Leonid Beschastny

3
그냥 참고로,이 사람은 또한 NPM 제거
BrDaHa

11
이 명령은 OSX에서 작동하며 npm을 제거하지 않습니다npm 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
Jack Q

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 년 6 월 현재 나에게 가장 효과적이었습니다. 유일한 추가 사항은 목록에서 "UNMET"종속성을 필터링하는 것일 수 있지만 npm remove UNMET단순히 NOOP 처럼 중요 하지는 않습니다.
kangax

4
grep -v npmnpm 자체가 제거되지 않도록 추가합니다 .sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo

거기에 간다, 당신의 npm!
모두 Іѕ Vаиітy

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)에서 중단됩니다. 이제 .bashrc 파일에서 npm_uninstall_all에 매핑 된 다음 Bash 명령을 사용하고 있습니다.

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

보너스가 추가 되었습니까? 더 빠릅니다!

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

package.json (NPM)에 나열된 모든 종속성을 어떻게 제거합니까?


이거 너무 좋아. 빠르고 간단한 : 난 그냥 사용 그렙 -v npmn전과tr
apnerve

16

Windows에서 "C : \ Users {username} \ 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

데비안과 파생에서 다음을 사용하여 jq 를 설치할 수 있습니다 .

sudo apt-get install jq

이것은 apropos json스타일 의 확실한 대답 입니다.
Richard Ayotte 1

sudo가 필요한 경우 :npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger

5

OP에서 OS를 지정하지 않았습니다. 들어 윈도우 ,이 스크립트는 지역을 핵무기하는 데 사용할 수있는 사용자는 글로벌 모듈과 캐시입니다.

나는 리눅스 에서 전역 루트가 주어진 사용자 대신 시스템에 실제로 전역 적이 라는 것을 알았습니다 . 따라서 글로벌 루트를 삭제하는 것은 공유 시스템에 적합하지 않을 수 있습니다. 그 외에도, 관심이 있다면 스크립트를 bash로 이식 할 수 있습니다 .

들어 윈도우 , 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가 표시되지 않으면 숨겨져 있음을 의미하며 파일 탐색기에서보기로 이동하여 숨겨진 항목을 확인하면 모든 숨겨진 폴더를 볼 수 있습니다.


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이있는 경우 내장 그래픽 패키지 관리자를 사용할 수 있습니다.

루트로 열고 emtpy 프로젝트를 만듭니다. 이동

파일> 설정> 언어 및 프레임 워크> Node.js 및 NPM

설치된 모든 패키지가 표시됩니다. 제거는 쉽고, 제거하려는 패키지를 선택하거나 선택 취소 할 수 있습니다 (Ctrl + a도 마찬가지).


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 global이 어디에 저장되어 있는지 정확히 알 수 없습니다.


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


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  

-1

sed 솔루션

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

-5

콘솔에 넣으십시오.

sudo npm list -g --depth = 0입니다. | awk -F '' '{print $ 2}'| awk -F '@' '{print $ 1}'| sudo xargs npm 제거 -g

그것은 나를 위해 일한다 ...


1
이 페이지에서 이미 언급 한 정확한 해결책이 여기 에 있습니다.
ivarni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.