[node.js] package.json에 node_modules 경로 지정

bower가 bowerrc 파일에서하는 것처럼 / vendor / node_modules라고 가정 해 보도록 애플리케이션에서 node_modules 디렉토리를 이동하는 방법이 있습니까? package.json에 지정할 수 있다고 생각했지만 해결책을 찾을 수없는 것 같습니다. 귀하의 도움에 감사드립니다.



답변

예, 가능합니다. NODE_PATH 환경 변수를 설정하십시오.

export NODE_PATH='yourdir'/node_modules

문서에 따르면 :

NODE_PATH 환경 변수가 콜론으로 구분 된 절대 경로 목록으로 설정된 경우 노드는 다른 곳에서 찾을 수없는 경우 해당 경로에서 모듈을 검색합니다. (참고 : Windows에서 NODE_PATH는 콜론 대신 세미콜론으로 구분됩니다.)

또한 노드는 다음 위치에서 검색합니다.

1 : $ HOME / .node_modules

2 : $ HOME / .node_libraries

3 : $ PREFIX / lib / node

여기서 $ HOME은 사용자의 홈 디렉토리이고 $ PREFIX는 노드의 구성된 node_prefix입니다.

이것은 대부분 역사적인 이유 때문입니다. 종속 항목을 node_modules 폴더에 로컬로 배치하는 것이 좋습니다. 더 빠르고 안정적으로로드됩니다.

출처


답변

요컨대 : 불가능하며 지원되지 않는 것처럼 보입니다 (여기 https://github.com/npm/npm/issues/775 참조 ).

CLI 또는 ENV-Variables (현재 선택된 답변 참조), .npmrc-Config-Files 또는 공통점을 사용하는 몇 가지 해키 해결 방법이 있습니다 npm link. 의 global솔루션.

저에게는 프로젝트에 기여한 사람들이 항상 특별한 구성을 만들거나 특별한 지식이 필요하기 때문에 이러한 솔루션 중 어느 것도 정말 깨끗한 것은 아닙니다 npm install.

따라서 : package.json을 node_modules를 설치하려는 동일한 디렉토리에 두거나 항상 프로젝트의 루트 디렉토리에 있다는 사실을 알고 있어야합니다.


답변

Yarn은이 기능을 지원합니다.

# .yarnrc file in project root
--modules-folder /node_modules

그러나 사용하는 패키지에 따라 경험이 다를 수 있습니다. 그 토끼 굴에 들어가고 싶을 지 모르겠네요.


답변

이것이 당신이 염두에 두었던 것인지 확실 node_modules하지 않지만 심볼릭 링크를 지원하지 않는 파일 시스템 (VM “공유”폴더)에 마운트 되었기 때문에 내 프로젝트 디렉토리 안에 설치할 수 없었기 때문에이 질문에 끝났습니다. ).

다음 해결 방법을 찾았습니다.

  1. package.json파일을 다른 파일 시스템의 임시 폴더에 복사합니다.
  2. npm install거기에서 실행
  3. 심볼릭 링크를 복사본으로 확장 node_modules하는 cp -r --dereference데 사용하여 결과 디렉토리를 프로젝트 디렉토리에 다시 복사합니다.

나는 이것이 node_modules다른 파일 시스템 으로 이동하는 방법을 찾을 때이 질문을 끝내는 다른 사람에게 도움이되기를 바랍니다 .

다른 옵션

@Charminbear가 연결된 github 문제에서 찾은 또 다른 해결 방법 이 있지만 https://github.com/browserify/resolve/issues/136에 따라 grunt지원하지 않기 때문에 작동 하지 않습니다 .NODE_PATH

당신이 말할 수 /media/sf_shared그리고 당신은 당신이 실제로 NPM에서 설치할 수없는 의미, 거기에 심볼릭 링크를 설치할 수없는
/media/sf_shared/myproject일부 모듈은 심볼릭 링크를 사용하기 때문이다.

  • $ mkdir /home/dan/myproject && cd /home/dan/myproject
  • $ ln -s /media/sf_shared/myproject/package.json (이 방향으로 심볼릭 링크를 할 수 있지만 / media / sf_shared 내부에 하나를 만들 수 없습니다)
  • $ npm install
  • $ cd /media/sf_shared/myproject
  • $ NODE_PATH=/home/dan/myproject/node_modules node index.js


답변