[node.js] npm 패키지의 로컬 설치를위한 사용자 지정 위치를 설정하는 방법은 무엇입니까?

npm install명령 플래그 또는 환경 변수를 통해에 대한 사용자 정의 패키지 대상을 지정할 수 있습니까?

기본적으로 npm 로컬 설치 node_modules는 현재 디렉토리 내에 있지만 node_modules예를 들어 다른 디렉토리 내에 설치하고 싶습니다 vendor/node_modules. 어떻게 그렇게 할 수 있습니까?



답변

TL; DR

--prefix플래그와 --global* 플래그 를 사용하여이를 수행 할 수 있습니다 .

pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules
bower@0.7.0 /Users/pje/foo/vendor/node_modules/bower

* 이것은 “글로벌”설치에도 불구하고, 설치된 쓰레기통하지 않는 명령 줄을 통해 액세스 할 수 없습니다 ~/foo/vendor/node_modules에 존재합니다 PATH.

TL; R

구성 가능한 모든 속성은 npm6 개의 다른 장소에서 설정할 수 있습니다. 우선 순위에 따라 :

  • 명령 줄 플래그 : --prefix ./vendor/node_modules
  • 환경 변수: NPM_CONFIG_PREFIX=./vendor/node_modules
  • 사용자 구성 파일 : $HOME/.npmrc또는 userconfigparam
  • 글로벌 구성 파일 : $PREFIX/etc/npmrc또는 userconfigparam
  • 내장 구성 파일 : path/to/npm/itself/npmrc
  • 기본 구성 : node_modules / npmconf / config-defs.js

기본적으로 로컬로 설치된 패키지는로 이동합니다 ./node_modules. 전역 prefix변수 는 구성 변수 로 이동 합니다 ( /usr/local기본적으로).

npm config list현재 구성을 확인 npm config edit하고 변경하기 위해 실행할 수 있습니다 .

추신

일반적으로 npm의 문서는 정말 유용합니다. 폴더 섹션은 NPM의 좋은 구조 개요하고 구성 섹션은이 질문에 대한 대답.


답변

구성에서 이것을 원하면 다음과 같이 npm 구성을 설정할 수 있습니다.

npm config set prefix "$(pwd)/vendor/node_modules"

또는

npm config set prefix "$HOME/vendor/node_modules"

구성을 확인하십시오

npm config ls -l

또는 @pje가 말하고 --prefix깃발을 사용하는 것처럼


답변

OSX의 경우 사용자 $HOME(아마도 / Users / yourname /) 로 이동하여 존재하지 않는 경우 .npmrc파일 (npm이 사용자 구성에 사용하는 파일)을 작성하고 npm 패키지의 디렉토리를 작성하십시오. / Users / yourname / npm에 설치하십시오. 해당 .npmrc 파일에서 “접두사”를 새 npm 디렉토리로 설정하십시오.이 디렉토리는 “전역 적으로”설치된 npm 패키지가 설치됩니다. 이러한 “전역”패키지는 분명히 사용자 계정에서만 사용할 수 있습니다.

.npmrc에서 :

prefix=${HOME}/npm

그런 다음 명령 행에서이 명령을 실행하십시오.

npm config ls -l

자체 로컬 구성과 전역 npm 구성 모두에 대한 출력을 제공해야하며 로컬 접두어 구성이 긴 출력 목록의 맨 위 근처에 반영되는 것을 볼 수 있습니다.

보안을 위해 /usr/local다른 곳에서 권장 한 것처럼 폴더 를 숨길 때 사용자 계정의 npm 동작을 구성하는 것이 좋습니다.


답변

예를 들어 Windows 7에서는 다음과 같은 명령 / 작업 집합을 사용할 수 있습니다.

개인 환경 변수를 작성하십시오. 이중 백 슬래시는 필수입니다.

  • 변수 이름 : %NPM_HOME%
  • 변수 값 : C:\\SomeFolder\\SubFolder\\

이제 구성 값을 새 폴더 (예시 파일 이름)로 설정하십시오.

  • npm 폴더 설정

npm config set prefix "%NPM_HOME%\\npm"

  • npm-cache 폴더 설정

npm config set cache "%NPM_HOME%\\npm-cache"

  • npm 임시 폴더를 설정하십시오.

npm config set tmp "%NPM_HOME%\\temp"

선택적으로 원본 폴더의 내용을 제거 할 수 있습니다 구성을 변경 하기 전에 .

  • npm-cache 삭제 npm cache clear

  • npm 모듈 나열 npm -g ls

  • npm 모듈 삭제
    npm -g rm name_of_package1 name_of_package2


답변

공유 종속성이있는 여러 프로젝트가 DRYer가되기를 원하는 것을 직접 찾은 후에 나는 다음을 발견했습니다.

  • 로컬로 설치하는 것은 사용하려는 모든 것을위한 노드 방식입니다. require()
  • 전역 설치는 경로에 원하는 바이너리에 대한 것이지만 다음을 통한 것은 아닙니다. require()
  • 접두사를 사용하면 적절한 경로 binman경로를 추가해야 합니다.$PATH
  • npm link( info )를 사용하면 전역 설치의 소스로 로컬 설치를 사용할 수 있습니다

→ 노드 방식을 고수하고 로컬로 설치

심판 :


답변