npm이 연결된 노드 모듈을 나열하는 쉬운 방법은 무엇입니까?


123

npm link로컬 복사본에 대한 전역 모듈의 이름을 나열하고 로컬 경로도 나열 하는 명령을 찾고 있습니다.

사실, 목록 의 모든 전 세계적으로 설치된 모듈은 더 나은의를 가진 것 npm link'D 것들 플래그 어떻게 든.


1
npm -g ls전 세계 모든 모듈을 나열해야하지만, 나는 그것이 연결리스트 경우 모듈을 모른다
Ferdi265

응용 프로그램에 대한 "package.json"파일 관리
CM

1
@CeeAim 나는 많은 package.jsons를 가진 많은 응용 프로그램을 가지고 있으며 CLI와 같은 다른 목적을위한 전역 모듈도 꽤 많이 있으며 많은 것들이 fork 및 npm link'd. 추적 할 방법이 필요합니다.
callum

답변:


64

node_modules디렉토리 내용을 나열 해 보셨습니까 (예 :) ls -l node_modules | grep ^l? 정상적인 심볼릭 링크입니다.

정말로 모든 심볼릭 링크 를 찾아야한다면 find / -type d -name "node_modules" 2>/dev/null | xargs -I{} find {} -type l -maxdepth 1 | xargs ls -l.


16
로컬로 연결된 네임 스페이스 모듈 (@ namespace / moduleName)에서는 작동하지 않습니다. 잔인한 해결책은 다음과 같습니다.( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
Andrea Carraro 2011

2
이 솔루션은 Windows에서 작동하지 않습니다 (다른 솔루션도 작동하지 않음).
Micah Zoltu

2
당신이 망할 놈의 bash는 터미널 사용하는 경우 @MicahZoltu 그것은 윈도우에서 작동합니다
그렉 M.

1
@scoped 패키지의 경우, 단지 LS에 -R을 추가 명령 :ls -l -R ./node_modules | grep ^l
Romasato

아래 답변을 찾았습니다. stackoverflow.com/a/48593067/7491536
Jack Howard

195

전역 적으로 연결된 모든 모듈을 나열하려면 다음과 같이 작동합니다 ( https://docs.npmjs.com/cli/ls 문서 ) :

npm ls -g --depth=0 --link=true

그래도 먼저 내 컴퓨터에서 npm 버전을 업데이트해야했습니다.

npm install npm@latest -g

15
가장 간단한 솔루션이고 Windows에서 작업하는 것에 찬성했습니다. 내가 이것을 두 번 이상 찬성 할 수 있기를 바랍니다.
Artif3x

첫 번째는없이 작동합니다 --link=true. 내 환경 : Win10, NVM = 1.1.7, 현재 Node = 8.14.0
Jeb50

1
목록에있는 항목을 제거하려면 :npm unlink <package> -g
zamnuts

연결된 패키지가 전역 적으로 설치되기 때문에 @ Jeb50이 의미가 있습니다.
kas

20

구문 분석에 대한 더 나은 대안 lsfind다음과 같이 사용하는 것입니다.

find . -type l

-maxdepth 1첫 번째 디렉터리 수준 만 처리하는 데 사용할 수 있습니다 .

find . -maxdepth 1 -type l

-ls추가 정보를 위해 사용할 수 있습니다 .

예를 들어 npm 링크 된 노드 모듈을 찾으려면 다음을 수행하십시오.

find node_modules -maxdepth 1 -type l -ls

여기 기사를 분석하는 이유는 ls좋은 생각되지 않는다


이것은 저에게 유용했습니다. 감사합니다 :) 요점 : gist.github.com/ryanve/5e28670dc459a4f83955b20f31b3a9e0
ryanve

13

에서 멋진 컬러 출력을 원하면 npm list다음과 같이 할 수 있습니다.

\ls -F node_modules | sed -n 's/@$//p' | xargs npm ls -g --depth 0

내 현재 놀이터 디렉토리에 제공됩니다.

+-- color@0.11.1 
+-- grunt@0.4.5
+-- http-server@0.8.5 
+-- jsdom@8.0.2 
+-- jsonfile@2.2.3 
+-- underscore@1.8.3 
+-- xmlserializer@0.3.3 
`-- zombie@4.2.1 

몇 가지 가정을하지만 대부분의 경우 작동하거나 아래 설명에 쉽게 적용 할 수 있습니다.

  • 명령 \ls에서 가능한 별칭을 우회 하는 데 사용ls
  • -F옵션은 링크에 대한 '@'표시기를 추가합니다.
  • sed명령은 그 링크를 선택하고 표시를 제거
  • xargs일부 인수로 이전 출력 전달npm ...
  • npm 다음과 함께 호출됩니다.
    • list또는 ls버전이있는 모듈 나열
      • ll나열된 각 모듈에 대한 세부 정보를 얻으려면로 교체하십시오 .
    • -g 글로벌 모듈 및
    • --depth 0 얕은 목록의 경우 (선택 사항)
    • --long false (기본값은 '목록').

문제 : 어떤 이유로 npm 이 현재 나에게 불필요한 항목을 제공합니다 (컬러 없음). 그들은 내가 " npm unlink " 했던 것들 일 것 입니다.

현재 npm 경로에있는 " 전역 적으로 설치된 모든 모듈 목록 " 경우 다음을 수행하십시오.

npm list -g

추가 요구 사항에 대해 살펴볼 수 있습니다.

npm help folders

전체 파일 시스템을 스캔하지 않는 한 심볼릭 링크를 거꾸로 따라갈 수 없습니다 (npm 특정 질문이 아닙니다).

이름으로 파일과 디렉토리를 빠르게 찾기 위해 locate일반적으로 하루에 한 번 재 작성된 색인에서 작동하는 것을 사용 합니다.

locate '*/node_modules'

거기에서 작업을 시작합니다 ( --regexp옵션으로 검색을 구체화 할 수 있습니다.


-g내 로컬 / 가장 가까운 임시 종속성 링크를 가져 오지 않고 사용 합니다. 감사!
kross

4

나는 내 자신의 도구를 작성한 후에도이 질문을 찾았습니다. 여기서는 완전성을 위해 npm-list-linked 입니다.

계층 구조에서 링크 된 모든 패키지를 반복적으로 따라갈 것입니다. 제 작업에서는 때때로 npm link2-3 레벨 깊이 가있을 수 있습니다. 이렇게하면 정확히 어느 것이 로컬이고 어느 것이 아닌지 알 수 있으므로 놀라움을 피할 수 있습니다.

$ npm-list-linked
Linked packages in /home/user/projects/some-project/
    @prefix/package 0.2.7
        other-package 0.1.2

2

내가 만든 fs심볼릭 링크를 확인 하는 데 사용하는 Node.js 모듈을 만들었습니다 npm link.

https://www.npmjs.com/package/symlinked

var symlinked = require("symlinked")

console.log(symlinked.names())

2
특히 medium.com/@maybekatz/… 관점 에서 CLI 실행 파일을 추가했다면 정말 좋을 것 입니다. 심볼릭 링크 된 패키지를 찾는 데 필요한 대부분의 사용 사례는 CLI에서 가져옵니다.
cchamberlain

어떤 이유로 링크를 감지 할 수 없습니다 :(
JacopKane

@cchamberlain API를 모델링 할 수있는 좋은 CLI 도구를 알려줄 수 있습니까? 또는 github.com/ryanve/symlinked에 cli 명령을 자유롭게 기여하십시오. :)
ryanve

@JacopKane github.com/ryanve/symlinked/issues/new 에 자세한 내용과 함께 문제를 게시 할 수 있습니까?
ryanve

1
@ryanve-done github.com/ryanve/symlinked/pull/1- 작동하지 않았기 때문에 범위 지정 패키지 지원도 추가했습니다. 간단한 구조에 대한 찬사! :)
cchamberlain

1

나는 나와 다른 사람들이 같은 질문을 많이하는 것을 봅니다. link-status이 정보를 표시하기 위해 호출 한 작은 CLI를 작성했습니다. 다른 사람들에게도 도움이 될 수 있습니다! 여기에서 확인 하세요!


0
find `npm root -g` -maxdepth 2 -type l

네임 스페이스 패키지를 포함한 글로벌 링크를 표시합니다.

@andrew의 대답은 때때로 작동합니다.

npm ls -g --depth=0 --link=true

하지만 어떤 경우에는 피어 dep 오류로 인해 날아갔습니다. 누군가에게 도움이되기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.