npm은 패키지를 어디에 설치합니까?


977

누군가 Node.js 모듈을 어디에서 찾을 수 있는지 알려줄 수 있습니까 npm?


3
리눅스 민트에$HOME/.npm-global/lib/node_modules
Synxmax

9
그냥 그렇게 모든 일이없이 설치, 알고 -g당신이 디렉토리가 말을 할 경우 디렉토리 예를 들어 작업 당신에 모듈을 설치합니다 옵션 ~/Desktop/tmp다음 cd ~/Desktop/tmp다음 않습니다 npm install appium후 않습니다 ls당신이 볼 node_modules package-lock.json당신이 노드 모듈 설치했기 때문에 appium당신을을 working directory슈퍼 있기 때문에 혼란 ... -g기본적으로해야 default하지만 아니다.
the_prole

2
@the_prole-고마워, 그것은 매우 유용했습니다 .
Fattie

답변:


1142

글로벌 라이브러리

npm list -g설치된 전역 라이브러리와 위치를 확인하기 위해 실행할 수 있습니다 . npm list -g | head -1경로 만 보여주는 잘린 출력에 사용하십시오 . 하위 패키지가 아닌 기본 패키지 만 함께 npm list --depth=0표시하려면 모든 패키지를 표시하고 전체적으로 설치된 패키지 만 가져 오려면 -g ie를 추가하십시오 npm list -g --depth=0.

유닉스 시스템에서는 일반적으로 /usr/local/lib/node또는 /usr/local/lib/node_modules전세계에 설치 될 때 배치됩니다 . NODE_PATH환경 변수를이 경로로 설정하면 노드별로 모듈을 찾을 수 있습니다.

Windows XP- %USERPROFILE%\AppData\npm\node_modules
Windows 7, 8 및 10-%USERPROFILE%\AppData\Roaming\npm\node_modules

비전 역 라이브러리

비전 역 라이브러리 node_modules는 현재있는 폴더 의 하위 폴더에 설치 됩니다.

npm list현재 위치에 설치된 비전 역 라이브러리를 볼 수 있습니다 .

-g 옵션을 사용하여 전역으로 설치하는 경우

npm install -g pm2-pm2는 전 세계적으로 설치됩니다. 그런 다음 일반적으로 /usr/local/lib/node_modules( npm root -g어디를 확인하는 데 사용) 에 있습니다.

npm install pm2-pm2가 로컬에 설치됩니다. 그런 다음 일반적으로 로컬 디렉토리에서 찾을 수 있습니다./node_modules


26
nvm을 사용하는 경우, 사용중인 노드의 버전에 따라 전역 모듈이 여러 위치 중 하나에있을 수 있습니다. 가장 좋은 방법은 npm list -g다른 답변에서 제안한대로 사용 하는 것입니다.
unscriptable

73
나를 위해 작동하지 않으며 bin 폴더 만 표시합니다. "npm root -g"가 작동합니다.
whitneyland

7
Arch linux에서 전역 모듈은 / usr / lib에 있습니다. "npm --help"는 출력의 마지막 라인으로 정확한 위치를 보여줍니다. 예 : npm@3.6.0 / usr / lib / node_modules / npm
Gregor

20
Windows 10에 배치%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami

11
"npm root -g"는 정확합니다. 목록은 작동 할 수 있지만 너무 많은 정보가 있습니다. 여기서 다른 명령은 찾고있는 정확한 위치를 알려줍니다. stackoverflow.com/a/24295332/174965
Adam Tolley

581

이 명령 npm root은 npm 패키지의 효과적인 설치 디렉토리를 알려줍니다.

현재 작업 디렉토리가 노드 패키지 또는 노드 패키지의 하위 디렉토리 인 npm root경우 로컬 설치 디렉토리를 알려줍니다. npm root -g현재 작업 디렉토리에 관계없이 전역 설치 루트를 표시합니다.

예:

$ npm root -g
/usr/local/lib/node_modules

설명서를 참조하십시오.


1
이 답변에 +1 (적어도 Linux Mint 17 Qianna 및 npm 3.9.5). 내 글로벌 node_modules폴더는에 /usr/local/lib/node_modules있습니다. 내가 할 때 sudo npm uninstall browserify -g( 즉 , 내가 sudo npm install browserify -g전에 한 것으로 가정 ) 그것은 그것을 거기에서 제거합니다.
nik_m

10
출력이 많은 출력에서 ​​경로를 추출하지 않고 더 큰 명령을 작성하는 데 적합하므로 훨씬 유용한 답변입니다.
Adam Tolley

2
Windows OS의 기본 루트는 C : \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang

2
MacOS Mojave 10.14.5의 경우/usr/local/lib/node_modules
Jim Aho

89

전체적으로 설치된 모듈의 경우 :

다른 답변은 플랫폼 별 응답을 제공하지만 일반적인 답변은 다음과 같습니다.

로 전역 모듈을 설치할 때 npm install -g somethingnpm은 prefix모듈을 설치할 위치를 알기 위해 구성 변수 를 찾습니다 .

당신은 실행하여 그 가치를 얻을 수 있습니다 npm config get prefix

해당 폴더에서 사용 가능한 모든 전역 모듈을 표시하려면 npm ls -g --depth 0( depth 0종속성을 표시하지 않음)를 사용하십시오.

전역 모듈 경로 사용을 변경하려면 npm config edit넣어 prefix = /my/npm/global/modules/prefix파일 또는 사용 npm config set prefix /my/npm/global/modules/prefix.

nodist 와 같은 일부 도구를 사용하면 전역 npm 모듈의 플랫폼 기본 설치 경로가 변경됩니다.


2
다음 질문에 답했습니다. "누가 Node.js 모듈의 위치를 변경할 수 있는지 알려줄 수 있습니까 ?" 참고 : 이것이 중요한 이유는 PATH를 다시 ​​변경할 필요가 없기 때문입니다. npmrc 파일에서 {npm config get prefx}가 열리는 기본 제안을 주석 해제했습니다.
HeyZiko

"nodist와 같은 도구를 사용하면 전역 npm 모듈의 플랫폼 기본 설치 경로가 변경됩니다." +1
Jim Aho

65

창문에서 나는 npm list -g그것을 알아 내었다. 기본적으로 내 (전역) 패키지가에 설치되었습니다 C:\Users\[Username]\AppData\Roaming\npm.


9
단지 참고-이것은 실행중인 사용자의 % appdata % \ npm입니다.
Felix

19

npm이 설치 한 실행 파일을 찾고 있다면 PATH에 넣고 싶을 수도 있습니다.

npm bin

또는

npm bin -g

노드가 homebrew와 함께 설치되고 npm 자체가 npm으로 업데이트 된 npm 패키지를 전체적으로 설치 한 경우 command not found오류 가 발생할 수 있습니다 . 그렇다면 PATH에 위의 내용을 추가하십시오. export PATH=$PATH:$(npm bin -g)voila
jacob

18

이전 버전의 NPM 모듈은 항상 / usr / local / lib / node 또는 .npmrc 파일 내에서 npm 루트를 지정한 위치에 배치되었습니다. 그러나 NPM 1.0 이상에서는 두 위치에 모듈이 설치됩니다. /.node_modules에서 응용 프로그램에 로컬로 모듈을 설치하거나 전역을 설치하여 위의 내용을 사용할 수 있습니다.

자세한 내용은 https://github.com/isaacs/npm/blob/master/doc/install.md 에서 찾을 수 있습니다.


4
1.0 모듈과 관련하여 / usr / local / lib / node_modules에 저장해야합니다.
Nick Campbell

@EricSmith 귀하의 링크도 깨졌습니다
nicolimo86

16

직접적인 답변은 아니지만 도움이 될 수 있습니다 ....

npm에는 npm config get cache( %AppData%/npm-cacheWindows)를 실행하여 찾을 수있는 캐시 폴더도 있습니다 .

npm 모듈은 먼저 여기에서 다운로드 된 다음 npm 전역 폴더 ( %AppData%/Roaming/npmWindows) 또는 프로젝트 특정 폴더 ( your-project/node_modules)에 복사 됩니다.

따라서 npm 패키지를 추적하고 어떤 방법으로 다운로드 한 모든 npm 패키지 목록 (npm 캐시가 정리되지 않은 경우) 은이 폴더를 확인합니다. 폴더 구조는{cache}/{name}/{version}

https://docs.npmjs.com/cli/cache 에도 도움이 될 수 있습니다.


14

전역 ( -g) 플래그로 모듈을 설치 한 경우 다음 명령을 실행하여 상위 위치를 얻을 수 있습니다.

npm get prefix

또는

npm ls -g --depth=0

설치된 모듈 목록과 함께 위치를 인쇄합니다.

건배 :-)


13

가장 쉬운 방법은

npm 목록 -g

패키지를 나열하고 설치된 위치를 봅니다.

나는 chololatey를 통해 npm을 설치 했으므로 위치는

C : \ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ tools \ node_modules

C : \ MyProgramData \는 초콜릿 저장소 위치입니다.


12

종속성없이 간단한 목록을 얻으려면 간단히 사용하십시오.

npm list -g --depth 0

6

다음 명령 으로 전체적으로 설치된 모듈 을 찾을 수 있습니다

npm list -g

node.js 모듈이 설치된 위치를 제공합니다.

C:\Users\[Username]\AppData\Roaming\npm

node.js 모듈을 폴더에 로컬로 설치하는 경우 다음 명령을 입력하여 위치를 볼 수 있습니다.

npm list

4

로부터 문서 :

npm 1.0에는 두 가지 방법으로 설치할 수 있습니다.

  • 전 세계적으로 -이 모듈을 삭제 {prefix}/lib/node_modules하고,에 풋 실행 파일 {prefix}/bin, {prefix}일반적으로 같은 것입니다 /usr/local. 또한 설명서 페이지 {prefix}/share/man가 제공되는 경우 에 설치합니다 .

  • 로컬 —- 현재 작업 디렉토리에 패키지를 설치합니다. 노드 모듈이 ./node_modules들어가고 실행 파일이 들어가며 ./node_modules/.bin/매뉴얼 페이지가 전혀 설치되지 않았습니다.

당신 {prefix}과 함께 할 수 있습니다 npm config get prefix. (nvm으로 노드를 설치할 때 유용합니다).


3

로부터 문서 :

패키지는 접두사 아래의 node_modules 폴더에 놓입니다. 로컬로 설치할 때, 메인 모듈을로드하기 위해 ( "packagename") 또는 다른 모듈을로드하기 위해 require ( "packagename / lib / path / to / sub / module")를 요구할 수 있습니다.

유닉스 시스템의 글로벌 설치는 {prefix} / lib / node_modules로 이동합니다. Windows에서 전체 설치는 {prefix} / node_modules (즉, lib 폴더 없음)로 이동합니다.

범위가 지정된 패키지는 해당 노드 접두사의 이름이 @ 기호로 붙은 관련 node_modules 폴더의 하위 폴더에 그룹화되어 있다는 점을 제외하고 동일한 방식으로 설치됩니다. 예를 들어 npm install @ myorg / package는 패키지를 {prefix}에 배치합니다. / node_modules / @ myorg / package. 자세한 내용은 범위를 참조하십시오.

패키지를 요구하려면 로컬로 설치하십시오.

당신 {prefix}과 함께 할 수 있습니다 npm config get prefix. (nvm으로 노드를 설치할 때 유용합니다).

로컬 에 대해 읽어보십시오 . 전 세계
에 대해 읽어보십시오 .



3

실제 구성을 검색하기 시작했습니다. 리눅스의 구성 파일 목록은 다음과 같습니다.

  • / etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

Windows에서 :-c / Program \ Files / nodejs / node_modules / npm / npmrc

그런 다음 파일에서 접두사가 구성됩니다.

prefix=/usr

접두사는 기본적으로 리눅스에서는 / usr, 윈도우에서는 $ {APPDATA} \ npm입니다.

노드 모듈은 $ prefix 트리 아래에 있으며 경로는 $ prefix / bin을 포함해야합니다.

문제가있을 수 있습니다.

  • 전역으로 설치할 때 "sudo su"를 사용하면 사용할 /root/.npmrc수 있습니다!
  • 당신은 sudo를하지 않고 로컬로 사용하는 경우 : 사용자 그것에 대해 /home/youruser/.npmrc.
  • 경로가 접두사를 나타내지 않는 경우
  • 사용할 때 npm set -g prefix /usr/ etc / npmrc를 전역으로 설정하지만 로컬을 재정의하지는 않습니다.

여기에 구성된 것을 찾기 위해 누락 된 모든 정보가 있습니다. 나는 철저한 희망을 가지십시오.


2

다른 답변에서 알 수 있듯이 가장 좋은 방법은

npm list -g

그러나 많은 수의 npm 패키지가 설치되어 있으면이 명령의 출력이 매우 길고 스크롤하기가 매우 어려울 수 있습니다 (때로는 뒤로 스크롤하지 못할 수도 있음).

이 경우 다음 more과 같이 프로그램에 파이프를 연결하십시오.

npm list -g | more

2

Windows 10 :을 실행했을 때npm prefix -g설치 위치가 내가 설치하는 데 사용한 git shell 경로 안에 있음을 알았습니다. 해당 위치가 경로에 추가 된 경우에도 전체적으로 설치된 패키지의 명령이 인식되지 않습니다. 다음에 의해 수정 됨 :

  1. 달리는 npm config edit
  2. 접두사를 'C : \ Users \ username \ AppData \ Roaming \ npm'으로 변경
  3. 해당 경로를 시스템 경로 변수에 추가
  4. -g를 사용하여 패키지를 다시 설치하십시오.

2

다른 답변으로 확장-

npm list -g

전 세계적으로 설치된 패키지의 위치를 ​​보여줍니다.

이 목록을 파일로 출력하려면 텍스트 편집기에서 쉽게 검색 할 수 있습니다.

npm list -g > ~/Desktop/npmfiles.txt



1

코드에서 글로벌 디렉토리에 액세스하려는 경우에서 역 추적 할 수 있습니다 process.execPath. 예를 들어, 찾을 수 wsproxy에있는, {NODE_GLOBAL_DIR}/bin/wsproxy당신은 단지 수 :

path.join(path.dirname(process.execPath), 'wsproxy')

npmcli가 @ ec9fcc1/lib/npm.js#L254 와 함께 작동 하는 방법도 있습니다 .

path.resolve(process.execPath, '..', '..')

ec9fcc1/lib/install.js#L521 도 참조하십시오 .

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

어디 globalPrefix에서 기본 설정이 ec9fcc1/lib/config/defaults.js#L92-L105 의를 :

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}

이것은 어떻게 작동합니까? 예를 들어 Node 바이너리는에 /usr/bin/node있지만 bin이므로 모듈은 존재하지 않습니다. 대신에 있습니다 /usr/lib/node_modules.
Florian Rappl

npm구현 을 참조하여 업데이트 됨
AT

이제 이것은 다른 이야기입니다. 플랫폼 (좋은)과 각각의 env 변수를 가져옵니다 (moduleName과 같은 중요한 기능을 언급하지는 않지만 평균 독자가 추론 할 수 있다고 생각합니다). 수정 / 수정 감사합니다!
Florian Rappl

1

Visual Studio를 설치 한 경우 노드를 직접 설치할 때 경로에있는 것과 별도의 자체 노드 사본이 제공됩니다. 내 위치는 C : \ Program Files (x86) \ Microsoft Visual Studio \ 2019에 있습니다. \ 커뮤니티 \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

이 디렉토리 내에서 npm 명령을 실행하면 Visual Studio 내에 어떤 노드 모듈이 설치되어 있는지 확인할 수 있습니다.


0

Windows 7, 8 및 10-% USERPROFILE % \ AppData \ Roaming \ npm \ node_modules

참고 : 디렉토리에 cd ..있을 때까지 폴더 유형에있는 경우 C:. 그런 다음을 입력하십시오 cd %USERPROFILE%\AppData\Roaming\npm\node_modules. 그리고 마술처럼 %USERPROFILE%로 바뀔 것 Users\YourUserProfile\입니다. 방금 Decko첫 번째 응답에서 언급 한 아이디어를 명확히하고 싶었습니다 . npm list -g전체적으로 설치 한 모든 비트를 나열합니다. 프로젝트는 관련 찾을 필요가 있다면 npm package다음 cd 'your angular project xyz', 다음 실행합니다 npm list. 에 모듈 목록이 표시됩니다 npm package. 또한 dependencies누락 된 목록을 제공 하므로 해당 프로젝트를 효과적으로 실행해야 할 수도 있습니다.

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