문제가 발생하기 시작했을 때 phonegap
를 통해 업그레이드하려고했습니다 npm
. 간단히 말해서, node_modules
내 컴퓨터 에는 두 개의 디렉토리가 있습니다.
/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules
실행하면 에있는 패키지의 복사본 npm upgrade -g phonegap
을 npm
업데이트하는 것처럼 보입니다 /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
답변
/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
.
답변
두 번째 Thomas David Kehoe , 다음과 같은주의 사항-
노드 버전 관리자 (nvm)를 사용하는 경우 전역 노드 모듈은 모듈을 저장할 때 사용중인 노드 버전에 관계없이 저장됩니다.
그래서 ~/.nvm/versions/node/{version}/lib/node_modules/
.
답변
npm root -g
npm_modules 전역 위치를 확인하려면
답변
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의 의견에 따라
답변
