[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 “공유”폴더)에 마운트 되었기 때문에 내 프로젝트 디렉토리 안에 설치할 수 없었기 때문에이 질문에 끝났습니다. ).
다음 해결 방법을 찾았습니다.
package.json
파일을 다른 파일 시스템의 임시 폴더에 복사합니다.npm install
거기에서 실행- 심볼릭 링크를 복사본으로 확장
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