programing

npm과 링크한 모든 Node.js 모듈을 나열하는 방법

minecode 2023. 9. 2. 09:50
반응형

npm과 링크한 모든 Node.js 모듈을 나열하는 방법

내가 가지고 있는 글로벌 모듈의 이름을 나열할 명령을 찾고 있습니다.npm link로컬 경로도 나열하고 로컬 복사본으로 이동합니다.

사실, 전 세계적으로 설치된 모든 모듈의 목록은 다음과 같이 훨씬 더 좋을 것입니다.npm link어떻게든 깃발이 달린 거지

글로벌하게 연결된 모든 모듈을 나열하면 다음과 같습니다(https://docs.npmjs.com/cli/ls) 참조).

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

하지만 먼저 컴퓨터에서 npm 버전을 업데이트해야 했습니다.

npm install npm@latest -g

당신은 방금 목록을 작성하려고 했습니까?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.

다음 명령은 npm 7 이후로 더 간단합니다.

  • 글로벌 모듈:npm ls --link --global
  • 로컬 모듈:npm ls --link

앤드류가 발견한 에 대한 공로입니다.--link깃발

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

find . -type l

사용할 수 있습니다.-maxdepth 1첫 번째 디렉토리 수준만 처리합니다.

find . -maxdepth 1 -type l

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

예를 들어, npm이 연결된 Node.js 모듈을 찾는 경우:

find node_modules -maxdepth 1 -type l -ls

여기 구문 분석이 최선의 생각이 아닌 이유가 있는 기사가 있습니다.

만약 당신이 멋진 색상의 출력을 원한다면.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명령은 이러한 링크를 선택하고 표시기를 제거합니다.
  • xargspart는 이전 출력을 인수로 전달합니다.npm ...
  • npm를 사용하여 호출됩니다.
    • list또는ls버전이 있는 모듈을 나열합니다.
    • 로 대체합니다.ll나열된 각 모듈에 대한 세부 정보를 가져옵니다.
    • -g글로벌 모듈 및
    • --depth 0얕은 목록의 경우(선택 사항)
    • --long false(기본값은 'list')입니다.

문제: 어떤 이유에서인지 npm은 현재 저를 위해 불필요한 항목을 제공합니다(색상이 아닌).그들은 제가 "npm 연결 해제"한 사람들일 것입니다.

현재 npm 경로에 "전체적으로 설치된 모든 모듈 목록"의 경우 다음을 수행합니다.

npm list -g

추가적인 필요성에 대해 알아보실 수 있습니다.

npm help folders

전체 파일 시스템을 검색하지 않으면 심볼릭 링크를 뒤로 이동할 수 없습니다(오후 관련 질문이 아님).

이름별로 파일 및 디렉터리를 빠르게 찾기 위해 사용합니다.locate일반적으로 하루에 한 번씩 재구성된 인덱스에서 작동합니다.

locate '*/node_modules'

그리고 거기서 작업을 시작합니다(검색을 세분화할 수 있습니다).--regexp선택.

사용하다

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

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

Andrew의 대답은 때때로 효과가 있습니다.

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

하지만 때로는 동료 의존성 오류로 인해 폭발하기도 했습니다.

다음을 사용하는 Symlinked의 Node.js 모듈을 만들었습니다.fs에 의해 만들어진 상징적인 링크를 확인합니다.npm link아니면 그렇지 않습니다.

var symlinked = require("symlinked")

console.log(symlinked.names())

제가 직접 도구를 작성한 후에 이 질문을 발견했는데, 여기 완전성을 위한 질문입니다: npm-list-linked.

계층의 모든 연결된 패키지도 반복적으로 따라갑니다.내 직장에서 우리는 가끔npm link 것이 어떤 것이 알 수 있습니다. 2-3단계는 지역적이고 어떤 것이 지역적인지 알 수 있습니다.그것은 놀라움을 피합니다.

npm-list-linked

출력:

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

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

Windows에서는 다음 디렉터리를 확인할 수 있습니다.

C:\Users\[username]\AppData\Roaming\npm\node_modules

글로벌 라이브러리 설치와 함께 여기에 나열된 심볼릭 링크 라이브러리가 표시됩니다.

언급URL : https://stackoverflow.com/questions/24933955/how-to-list-all-the-node-js-modules-i-have-linked-with-npm

반응형