조직에서 npm과 함께 사용할 개인 저장소를 호스팅 할 수 있습니까?


219

Npm은 조직 내에서 사용하기에 훌륭한 플랫폼 인 것 같습니다. Nexus / Maven과 같이 개인 저장소가 가능한지 궁금합니다. Google에 아무것도 나타나지 않습니다 :(


1
아래는 매우 깔끔한 문서입니다. clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repository 이것은 그의 답변에서 설명한 pvorb와 동일합니다.
ramesh.mimit

2
있습니다 clock.co.uk의 포스트가입니다 전체 고궁 박물원 레지스트리의 중복. 필요한 종속성의 로컬 캐시의 경우 찾은 가장 좋은 솔루션은 npm_lazy 입니다. 내 포크 의 문서 가 약간 따라 가기가 더 쉬울 수 있습니다.
Jake Berger

1
나는 토론에 조금 늦게 해요 알고 있지만 난 그냥 같이 우리 (무료) 제품에 우리가 최근에 추가 한 개인 NPM 레지스트리 지원을 추가 할 것입니다 PROGET
칼 Harnagy

2
아래에 언급 된대로 Nexus는 이제 호스팅 및 프록시 npm 리포지토리를 지원합니다.
Zac Thompson

8
수년에 걸쳐 많은 옵션이 가능해졌습니다. 이것으로 다시 돌아 오는 사람은 2011 년에 내가 수락 한 것만이 아니라 모든 답을 읽어야합니다.
adam

답변:


100

나는 이것을 할 수있는 쉬운 방법이 없다고 생각합니다.

고궁 박물원 문서에서 보면 그것이 가능하다는 것을 우리에게 알려줍니다 :

개인 레지스트리를 실행할 수 있습니까?

예!

가장 쉬운 방법은 소파 데이터베이스를 복제하고 동일한 (또는 유사한) 디자인 문서를 사용하여 API를 구현하는 것입니다.

공식 CouchDB에서 연속 복제를 설정 한 다음 내부 CouchDB를 레지스트리 구성으로 설정하면 비공개 패키지 외에 게시 된 패키지를 읽을 수 있으며 기본적으로 내부적으로 만 게시됩니다. 전 세계에 볼 수있는 패키지를 게시하려면 --registry해당 명령에 대한 구성을 재정의하면 됩니다.

시계 블로그에서 개인 npm 저장소를 만드는 방법 에 대한 훌륭한 자습서도 있습니다 .

편집 (2017-02-26) :

실제로 새로운 것은 아니지만 이제 NPM에서 개인 패키지를 호스팅 할 유료 요금제 가 있습니다.

수년에 걸쳐 NPM은 NPM을 기반으로 구축 된 거대한 프론트 엔드 생태계를 통해 Node.js가 아닌 많은 회사의 요소가되었습니다. 귀사에서 내부적으로 Java 프로젝트를 호스팅하기 위해 Sonatype Nexus 를 실행중인 경우 내부 NPM 패키지를 호스팅하는 데 사용할 수도 있습니다.

다른 옵션으로는 JFrog ArtifactoryInedo ProGet 이 있지만 사용하지는 않았습니다.


201

https://github.com/isaacs/npmjs.org/ : npm 버전 v1.0.26에서는 개인 git 저장소 URL을 package.json 파일의 종속성으로 지정할 수 있습니다. 나는 그것을 사용하지 않았지만 피드백을 좋아할 것입니다. 해야 할 일은 다음과 같습니다.

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
    }
}

다음 포스트는 이것에 대해 이야기합니다 : 디버깅 가능 : 개인 npm 모듈


3
훌륭한 기능이지만, 전체 NPM 리포지토리, 즉 내부 Maven 리포지토리를 요청하기 때문에 pvorb를 받아 들였습니다
adam

2
참고 : NPM은 현재이 자식 URL (예 : 1.2.x 또는 ^ 1.2.3)로 버전 범위 지정을 지원하지 않습니다. github.com/npm/npm/issues/3328
Clay

@Clay, 태그 (v0.0.1)를 지정할 수 있습니다.
mcha

예, 정확한 태그를 사용할 수 있습니다.
Clay

GitHub 배포 키를 사용하여 개인 저장소에 인증하는 방법이 있습니까?
sunknudsen

91

이를 위해 npm 패키지를 쉽게 사용할 수 있습니다. https://www.npmjs.org/package/sinopia

간단히 말해, Sinopia는 개인 / 캐싱 npm 리포지토리 서버로 구성없이 구성 할 수 있습니다.

Sinopia를 사용하여 다음을 수행 할 수 있습니다.

  • 개인 패키지를 공개하지 않고 공개
  • 사용 된 공용 패키지 만 캐시 (전체 공용 등록을 복제 할 필요가 없음)
  • 내부적으로 작성된 수정 된 버전으로 공개 패키지를 대체하십시오.

13
시노 피아는 더 이상 유지되지 않는 것 같습니다. 마지막 커밋은 오늘 (2016 년 3 월 7 일) 현재 8 개월이 넘었습니다. 보기 좋고 잘 작동하지만 유지 관리에주의하십시오.
Ray Booysen

45
verdaccio를 확인하십시오 . 그것은의 적극적으로 유지 포크의 : github.com/verdaccio/verdaccio
Rotareti

1
verdaccio는 공용 레지스트리를 쿼리하지 않는 "개인 전용"구성을 지원합니까?
MarkusSchaber

1
@MarkusSchaber 다른 레지스트리에 대한 프록시를 비활성화 할 수 있습니다. 프록시가 네트워크에 액세스하려고해도 오프라인 모드로 작동합니다.
Juan Picado

1
정말 일이 Verdaccio는 자신의 응답 오늘날의 가치가 stackoverflow.com/a/50815174/336753을 심지어 처음 여기에 의견을 통보하지 않았다.
kub1x

40

Verdaccio는 내가 찾던하고 그것이 자신의 답변을받을 권리가 무엇입니까) 그것은 Sinopia의 적극적으로 유지 포크 (매우 upvoted 대답은 여기에 ). 그것은이다 NPM 패키지와 NPM 레지스트리 및 찾을 수 있습니다

여기 : https://github.com/verdaccio/verdaccio ,
여기 : https://www.verdaccio.org ,
여기 : pnpm i -g verdaccio또는
여기 :docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio


2
이! 고맙습니다-> docker run -it --rm --detach --name verdaccio -p 4873 : 4873 verdaccio / verdaccio
mwm

1
@mwm 감사합니다. 도커 버전을 목록에 추가했습니다.
kub1x

28

2015 년 4 월 14 일에 npm 개인 모듈 이 도입되었습니다.

개인 모듈에 대한 비용을 지불하면 다음을 수행 할 수 있습니다.

  • 원하는만큼 개인 패키지를 호스팅
  • 다른 유료 사용자에게 해당 패키지에 대한 읽기 권한 또는 읽기 / 쓰기 권한 부여
  • 다른 유료 사용자가 귀하에게 읽기 권한을 부여한 모든 패키지를 설치하고 사용하십시오.
  • 다른 유료 사용자가 귀하에게 쓰기 권한을 부여한 모든 패키지에 대해 공동 작업

물론, 그것은 무료입니다-현재 사용자 당 한 달에 7 $.

그리고 그것은 여전히 ​​새로운 서비스입니다. 예를 들어 조직 계정에 대한 지원이 누락되었습니다 (2015 년 6 월 기준).

현재 개인 패키지는 개별 사용자 만 사용할 수 있지만 조직 계정에 대한 지원은 곧 제공 될 예정입니다. 그 동안 조직의 사용자를 자유롭게 작성하고 지원이있을 때 조직으로 업그레이드 할 수 있습니다.

따라서 완벽하지는 않지만 개인 패키지를 유지 관리 하는 공식 npm 솔루션이므로 언급 할 가치가 있습니다.

최신 정보

개별 사용자와 조직 모두를위한 Npm 개인 패키지 가 제공됩니다 .

  • 무제한 공개 및 개인 패키지
  • 월 $ 7 / 개발자
  • 조직 이름을 기반으로 하나의 범위 이름을 포함합니다.
  • @ org-name / foo에 대한 액세스 공개 및 제어

(면책 조항 : npm, Inc. 와 원격으로 제휴하지 않아도됩니다 )



10

이 스레드는 업데이트가 필요합니다. 사용 가능한 npm 레지스트리를 보면 매우 무겁고 couchdb가 필요합니다. Gemfurry와 다른 사람들은 공개 리포지토리에서 분기해야합니다. shadow-npm과 같은 npm 중 일부 에는 최근 커밋없습니다 .

그런 다음 Reggie 를 찾았습니다 . 커밋 활동이 뛰어나고 설치 및 사용이 매우 쉽고 커뮤니티 지원 이 아주 좋습니다 . 매우 가볍고 couchdb 등을 다룰 필요가 없습니다.


9

귀하의 질문을 잘 이해하지 못하면 저를 용서하십시오. 그러나 여기 내 대답이 있습니다.

개인 npm 모듈을 생성하고 npm의 일반 명령을 사용하여 설치할 수 있습니다. 대부분의 node.js 사용자는 git를 리포지토리로 사용하지만 원하는 리포지토리를 사용할 수 있습니다.

  1. 프로젝트에서 NPM 패키지의 골격을 원할 것입니다. 대부분의 노드 모듈에는 NPM과의 통합 방법을 볼 수있는 git 저장소가 있습니다 (package.json 파일, 이것의 일부이며 NPM 웹 사이트는 npm 패키지를 만드는 방법을 보여줍니다)
  2. 인터넷이나 네트워크에서 패키지를 준비하고 tarball로 만들어 npm 설치 다운로드를 준비하기 위해 비슷한 것을 사용하십시오.
  3. 패키지가 만들어지면

    npm install * tarball_url *


5
당신은 그의 질문을 얻지 못했지만 대답은 나에게 매우 유용합니다! :)
Eduardo Costa

7

이것이 내가 아는 가장 쉬운 방법입니다. Gemfury 전용 npm 레지스트리 를 사용하여 클라우드에서 호스팅하십시오 .

무료이며 Github 계정으로 로그인 할 수 있습니다. 자체 데이터베이스 설정과 비교하여 많은 시간을 절약해야합니다.


그것은 자유롭지 않다.
I.Tyger

6

우리는 Sonatype Nexus를 사용하고 있으며 버전은 Nexus Repository ManagerOSS 3.6.1-02입니다. 그리고 NPM 개인 저장소를 지원하고 패키지를 캐시했다고 확신합니다.

여기에 이미지 설명을 입력하십시오


5

파티에 조금 늦었지만 NodeJS (~ 11 월 14 일 현재)는 회사 NPM 저장소를 지원합니다 . 공식 사이트 에서 자세한 내용을 확인할 수 있습니다 .

한 눈에보기에 npmE는 NPM 리포지토리의 폴링 스루 미러링을 허용하는 것으로 보입니다. 즉, 내부 NPM 리포지토리에서 패키지를 찾을 수없는 경우 실제 NPM 리포지토리 에서 패키지를 찾습니다. 매우 유용한 것 같습니다!

npm Enterprise는 npm 및 공개 npm 레지스트리를 유지 관리하는 팀에서 조직 내 JavaScript 모듈을 안전하게 공유 및 배포하기위한 온-프레미스 솔루션입니다. 다음이 필요한 팀을 위해 설계되었습니다.

내부 모듈을 쉽게 공유하고 개발 및 배포 워크 플로를보다 효율적으로 제어합니다. 오픈 소스 모듈을 법적 요구 사항을 준수하여 온-프레미스 npm을 호스팅하기위한 배포와 관련하여보다 강력한 보안을 제공합니다.

npmE는 이미 사용중인 것과 동일한 표준 npm 클라이언트와 작동하는 npm 레지스트리이지만, 현재 노드를 적극적으로 채택하는 대규모 조직에 필요한 기능을 제공합니다. npm 오픈 소스 프로젝트의 스폰서이자 공개 npm 레지스트리의 호스트 인 npm, Inc.에서 빌드했습니다.

불행히도 무료가 아닙니다. 시험판을받을 수 있지만 상용 소프트웨어입니다. 솔로 개발자에게는 그리 좋지 않지만 솔로 개발자라면 GitHub가 있습니다 :-)


3

이 게시물 은 개인 레지스트리를 설정하는 방법에 대해 설명합니다

  • couchdb가 시스템에 설치되어 있는지 확인하십시오
  • npmjs.org를 복제하면 다음 명령을 사용하십시오.

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"

참고가 "continuous":true이 CouchDB를의 _changes API를 활용하고이 API가 통지 될 때 새로운 변화를 가져옵니다 명령에.

이러한 복제를 중지하려면을 쉽게 추가 할 수 있습니다 "cancel":true. 그런 다음 스크립트는

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"

그런 다음에 갈 npmjs.org 추가 정보 NPM을 (확인 설치 nodejsgit설치). 타격은 모든 단계입니다

git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp 
npm install couchapp 
npm install semver 
couchapp push registry/app.js http://localhost:5984/registry 
couchapp push www/app.js http://localhost:5984/registry 

1
URL isaacs.iriscouch.com/registry 는 불행히도 죽었습니다. 처음에는 작동하는 것 같지만 skimdb.npmjs.com/registry로 변경하려고했지만 tarballs 가 아닌 레지스트리 색인 만 복제하는 중입니다.
fuzzyTew

couchapp의 추가 정보 상태는 couchapp 이제 좀되지 않습니다,하지만 그것은 또한 전체 레지스트리를 반영하는 현재의 방법은 사용하는 것입니다 말한다 NPM-fullfat - 레지스트리
fuzzyTew

내가 사용하는 결국 정적 레지스트리 CouchDB를 솔루션과는 달리 전혀 구성이 필요하지 않습니다이를 들어,.
fuzzyTew


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.