programing

패키지에서 node_modules에 대한 경로를 지정합니다.json

cafebook 2023. 10. 20. 14:21
반응형

패키지에서 node_modules에 대한 경로를 지정합니다.json

애플리케이션에서 node_modules 디렉토리를 bowerrc 파일과 같이 /vendor/node_modules라고 이동할 수 있는 방법이 있습니까?저는 패키지에 명시될 수 있다고 생각했습니다.json 하지만 해결책을 찾을 수 없는 것 같습니다.당신의 도움에 대단히 감사드립니다.

가능합니다. NODE_PATH env 변수를 설정하기만 하면 됩니다.

export NODE_PATH='yourdir'/node_modules

문서에 의하면:

NODE_PATH 환경 변수가 절대 경로의 콜론으로 구분된 목록으로 설정된 경우 다른 곳에서 찾을 수 없는 모듈을 검색합니다. (참고: 윈도우즈의 경우 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그리고 그것은 동작한다.

그래서: 소포를 넣어야 할 것입니다.json은 node_modules를 설치할 디렉토리와 동일한 디렉토리에 있거나 프로젝트의 루트 dir에 항상 있을 것이라는 사실을 알고 있습니다.

원사는 이 기능을 지원합니다.

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

하지만 어떤 패키지를 사용하느냐에 따라 경험이 달라질 수 있습니다.저 토끼굴에 들어가고 싶으실지 모르겠네요.

이것이 당신이 생각한 것인지는 모르겠지만, 설치를 할 수 없어서 결국 이 질문을 하게 되었습니다.node_modulessymlinks(VM "공유" 폴더)를 지원하지 않는 파일 시스템에 마운트된 프로젝트 dir 내부에 있습니다.

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

  1. 복사합니다.package.json다른 파일 시스템의 임시 폴더에 파일 저장
  2. 실행.npm install거기.
  3. 결과 복사node_modules디렉토리를 다시 프로젝트 dir에, 사용cp -r --dereferencesymlink를 복사본으로 확장합니다.

이것이 이사할 방법을 찾을 때 이 질문에 이르게 된 다른 사람에게 도움이 되었으면 합니다.node_modules다른 파일 시스템에 연결할 수 있습니다.

기타옵션

@Charminbear가 링크한 github 문제에서 발견한 다른 해결 방법이 있지만, 이것은 작동하지 않습니다.grunt지원하지 않기 때문에NODE_PATHhttps://github.com/browserify/resolve/issues/136 에 따르면 다음과 같습니다.

당신이 가지고 있다고 가정해 보겠습니다./media/sf_shared심볼 링크를 설치할 수 없습니다. 즉, 실제로 npm 설치가 불가능합니다./media/sf_shared/myproject일부 모듈은 심볼 링크를 사용하기 때문입니다.

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

만약 내가 도커 안에 있고 내가 지속적으로 그것을 유지하고 싶다면 어떻게 해야 합니까?node_modules한 권으로?그다음에.node_modules내 앱 경로 내부는 내게 선택 사항이 아닙니다.

새로운 코드를 컨테이너에 전개할 때 tar를 넣고 임시 폴더에 추출한 후 app 디렉토리에 rsync합니다. 있습니다.--deletersync에 대해 설정된 플래그이므로 tar에 없는 모든 것이 앱 폴더에서 제거됩니다.그것은 또한 다음과 적용됩니다.node_modules폴더를 사용할 수 있는 유일한 솔루션은 다음과 같습니다.

앱 디렉터리에 다음을 포함하는 디렉터리에 대한 심볼릭 링크를 만듭니다.node_modules호스트에서 컨테이너에 마운트됩니다.

언급URL : https://stackoverflow.com/questions/26293049/specify-path-to-node-modules-in-package-json

반응형