내 npm 모듈은 Mac OS X에서 어디에 설치해야합니까?


82

문제가 발생하기 시작했을 때 phonegap를 통해 업그레이드하려고했습니다 npm. 간단히 말해서, node_modules내 컴퓨터 에는 두 개의 디렉토리가 있습니다.

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules

실행하면 에있는 패키지의 복사본 npm upgrade -g phonegapnpm업데이트하는 것처럼 보입니다 /usr/local/lib/node_modules. 그러나 which phonegap심볼릭 링크가 /usr/local/share/npm/lib/node_modules.

또한와 같은 독립 실행 형 패키지를 설치하려고 express하면 파일이 /usr/local/lib/node_modules디렉토리에 설치 되지만 실행 파일에 대한 심볼릭 링크는 내 $PATH.

두 가지 질문 :

  • Mac OS X에서 노드 모듈에 적합한 디렉토리는 무엇입니까?
  • 소프트웨어를 설치할 때 npm실행 파일을 연결 하도록 구성 하려면 어떻게 $PATH해야합니까?

보너스 포인트 : 설치 방법이 node구성에 영향을 줍니까? 있습니다 옵션이 많은 .


편집 : 나는 심볼릭 링크가 내에서 생성되고 있었다 있다고 생각 /usr/local/bin하지만, 내은 .bash_profile과 설치했습니다 /usr/local/share/npm/bin의에 앞서 /usr/local/bin제 시가 $PATH. 나는 어느 시점에서 그 경로를 내 프로필에 추가 한 것을 막연하게 기억하지만 그 이유는 확실하지 않습니다.

이제 질문은 다음과 같습니다. 어떻게 node_modules내 컴퓨터에서 두 개의 서로 다른 디렉토리를 갖게되었고 왜 내 디렉토리를 바로 대신 하위 디렉토리 node_modules에두고 싶을 까요?share/npm/lib/usr/local/lib

답변:


114

/usr/local/lib/node_modules 전역으로 설치된 노드 모듈의 올바른 디렉토리입니다.

/usr/local/share/npm/lib/node_modules나에게 의미가 없습니다. 여기서 한 가지 문제는 node_modules 라는 두 개의 디렉토리가 있기 때문에 혼란스러워한다는 것입니다 .

/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules

후자는 Node와 함께 제공되는 노드 모듈 인 것 같습니다. 예를 들어 lodash전자가 npm.


1
이 두 노드의 차이점은 무엇입니까? OS X 사용자의 경우 노드에서 사용하기 위해 설치할 때 권장됩니다. npm의 적절한 설치로 이동하는 것이 더 낫습니까?
알리시아

2
macports에서 npm2를 설치했습니다. 경로가 해당 위치에없고 / opt / local / share에도 없습니다.
holms

71

두 번째 Thomas David Kehoe , 다음과 같은주의 사항-

노드 버전 관리자 (nvm)를 사용하는 경우 전역 노드 모듈은 모듈을 저장할 때 사용중인 노드 버전에 관계없이 저장됩니다.

그래서 ~/.nvm/versions/node/{version}/lib/node_modules/.


6
내가 찾던 바로 그것.
ap_snitch

56
npm root -g

npm_modules 전역 위치를 확인하려면


4

NPM 패키지의 위치를 ​​알고 싶다면 다음을 수행해야합니다.

which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x  1 t04435  admin    46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

따라서 npm이 NODE 패키지 자체이므로 다른 패키지 ( EUREKA ) 와 동일한 위치에 설치됩니다 . 따라서 확인하려면 node_modules로 cd하고 디렉토리를 나열해야합니다.

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed

또는

npm root -g

@anthonygore의 의견에 따라


4
쉬움

1
나를 위해, npm root -g그리고 which npm동일한 결과를 제공하지 않았다. 나는 제거하고 싶어 expo-cli하고 나는 제거하여 성공 expoexpo-cli에서 디렉토리 /usr/local/bin/npm. @ T04435 감사합니다!
Aleksandar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.