Programing

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

lottogame 2020. 8. 17. 09:31
반응형

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


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

추신 현재 나는 해결 방법으로 .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


최선의 방법은 아니지만 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/'

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

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

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


몇 년이 지났고이 작업을 수행하는 것이 불가능한 것 같으므로 (npm 만 사용)이 문제에 대한 해결책은 Nexus Repository Manager (Sonatype에서 제공) 를 사용하는 것 입니다. 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"을 가리 키도록 $ 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은 항상 내부에서 가져 오려고 시도합니다. 찾을 수없는 경우 프록시에서 가져옵니다.

도움이 되었기를 바랍니다.


I use Strongloop's cli tools for that; see https://strongloop.com/strongblog/switch-between-configure-public-and-private-npm-registry/ for more information

Switching between repositories is as easy as : slc registry use <name>


I encounter the same problem when my company set up its own registry, so I heavily rework on proxy-registry into proxy-multi-registries to solve this problem. Hope it will also helps you.

참고URL : https://stackoverflow.com/questions/32633678/is-there-any-way-to-configure-multiple-registries-in-a-single-npmrc-file

반응형