[node.js] 단일 npmrc 파일에서 여러 레지스트리를 구성하는 방법이 있습니까?

여기 내 문제가 있습니다. VPN에서만 작동하는 개인 NPM 레지스트리가 있습니다. VPN을 사용하지 않을 때 원활하게 작동하도록 폴백 레지스트리 https://registry.npmjs.org 를 갖고 싶습니다 .

추신 : 현재 npmrc 를 사용하고 있습니다 .npmrc 는 해결 방법으로 .npmrc 파일을 전환하는 데 효과적입니다.



답변

파일 에 범위가 지정된 패키지 에 대한 레지스트리가 여러 개있을 수 있습니다 .npmrc. 예를 들면 다음과 같습니다.

@polymer:registry=<url register A>
registry=http://localhost:4873/

@polymer범위 에 속하는 패키지 는 https://registry.npmjs.org 에서받을 수 있지만 나머지는 지역 NPM에서받습니다.


답변

버전 4.4.1에서 패키지 이름을 변경할 수있는 경우 다음을 사용하십시오.

npm config set @myco:registry http://reg.example.com

@myco패키지 범위는 어디에 있습니까 ?

다음과 같은 방법으로 패키지를 설치할 수 있습니다.

npm install @myco/my-package

자세한 정보 : https://docs.npmjs.com/misc/scope


답변

인증 솔루션을 찾는 사람이라면 .npmrc파일에 여러 줄을 가질 수있는 범위가 지정된 패키지 솔루션을 추가 합니다.

//internal-npm.example.com:8080/:_authToken=xxxxxxxxxxxxxxx
//registry.npmjs.org/:_authToken=yyyyyyyyyy

각 줄은 다른 NPM 레지스트리를 나타냅니다


답변

가장 좋은 방법은 아니지만 Windows에서도 Mac 또는 Linux를 사용하는 경우 다른 레지스트리에 별명을 설정할 수 있습니다.

##############NPM ALIASES######################
alias npm-default='npm config set registry https://registry.npmjs.org'
alias npm-sinopia='npm config set registry http://localhost:4873/'


답변

몇 년이 지났고 (npm 만 사용하여)이 작업을 수행 할 수없는 것처럼 보이 므로이 문제에 대한 해결책 은 Sonatype 의 Nexus Repository Manager 를 사용하는 것 입니다. Nexus는 여러 리포지토리를 지원하고 주문할 수 있으며 프록시 / 캐시도 속도를 향상시킵니다.

무료 버전과 무료 / 유료 버전이 있습니다. 이를 지원하는 기능은 https://help.sonatype.com/repomanager3/node-packaged-modules-and-npm-registries에 설명되어 있습니다.

위의 URL / 링크가 작동을 멈출 경우 정보가 여전히 여기에 있으므로 관련 정보가 아래에 복제됩니다.

리포지토리 그룹은 추가 클라이언트 측 구성 없이도 모든 npm 레지스트리 리포지토리를 리포지토리 관리자에서 사용자에게 공개하는 데 권장되는 방법입니다. 리포지토리 그룹을 사용하면 하나의 URL을 사용하여 여러 프록시 및 호스트 리포지토리의 집계 된 내용을 npm 및 기타 도구에 노출 할 수 있습니다.

그것은 당신이 개인 npm 레지스트리를 만들 수 있습니다

개인 npm 레지스트리를 사용하여 타사 패키지뿐만 아니라 자체 패키지를 업로드 할 수 있습니다.

중복 다운로드를 줄이고 개발자 및 CI 서버의 다운로드 속도를 향상 시키려면 https://registry.npmjs.org 에서 호스팅되는 레지스트리를 프록시해야합니다 . 기본적으로 npm은이 레지스트리에 직접 액세스합니다. 필요한 다른 레지스트리를 프록시 할 수도 있습니다.

따라서이 작업을 수행하기 위해 수행하는 빠른 글 머리 기호 목록은 다음과 같습니다.

  • Nexus 설치

  • 로컬 / 개인 저장소를 작성하거나 다른 서버에서 개인 저장소를 가리 킵니다.

  • 비공개 리포지토리와 공개 리포지토리를 나열하는 GROUP을 만듭니다.

  • 방금 생성 한 “GROUP”을 가리 키도록 $ HOME / .npmrc 파일을 구성하십시오.

  • 비공개 npm 패키지를 로컬 리포지토리에 게시하십시오.

  • 사용자는 이제 일회성 설정을 실행할 수 있습니다.

npm config set registry https://nexus/content/groups/GROUP

  • 그런 다음 사용자는를 통해 공개 또는 개인 패키지를 모두 설치할 수 있습니다 npm install.

    npm install my-private-package
    npm install lodash any-other-public-package

간단한 npm install명령을 통해 공용 및 개인 패키지를 모두 설치할 수 있습니다 . Nexus는 그룹에 구성된 각 리포지토리를 검색하는 패키지를 찾아 결과를 반환합니다. 따라서 npm은 여전히 ​​레지스트리가 하나만 있다고 생각하지만 커튼 뒤에는 여러 개의 저장소가 사용되고 있습니다.

중요 참고 : 구성 요소를 게시 할 때 npm publish --registry https://nexus/content/repositories/private-repo my-private-package패키지가 올바른 저장소에 게시되도록 명령 을 지정해야합니다 .


답변

파일 의 registry항목에 여러 저장소 구문을 사용할 수 있습니다 .npmrc.

registry=http://serverA.url/repository-uri/
//serverB.url/repository-uri/
//serverC.url/repository-uri/:_authToken=00000000-0000-0000-0000-0000000000000
//registry.npmjs.org/

그러면 npm이 다른 서버에서 패키지를 찾게됩니다.


답변

시도해 볼 수있는 몇 가지 단계. (우리가 직장에서하는 방식)

  • 둘 이상의 저장소 소스 주소로 레지스트리 그룹을 작성하십시오. 하나는 당신의 내부 개인이고 다른 하나는 npmjs에 대한 프록시가 될 것입니다.
  • 이 그룹을 .npmrc 파일에서 레지스트리로 만드십시오. 이 방법으로 npm은 항상 내부에서 가져 오려고 시도하지만 프록시에서 찾지 못하면

희망이 도움이됩니다.