비공개 Github Repo를 NPM 종속성으로 사용하는 방법


203

어떻게이 같은 개인 Github에서의 환매 특약 나열 할 "dependency"의를 package.json? npm의 Github URL 구문을 시도했지만 패키지 폴더에서 ryanve/example수행 npm install하면 개인 종속성에 대해 "설치할 수 없습니다"오류가 발생합니다. 개인 저장소에 따라 특별한 구문 (또는 다른 메커니즘)이 있습니까?

답변:


284

https 및 oauth 또는 ssh 를 통해 수행 할 수 있습니다 .

https 및 oauth : 범위가 "repo" 인 액세스 토큰작성한 후 다음 구문을 사용하십시오 .

"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"

또는

ssh : ssh를 설정 한 후 다음 구문을 사용하십시오.

"package-name": "git+ssh://git@github.com:<user>/<repo>.git"

(사용자 앞에 슬래시 대신 콜론을 사용하십시오)


19
또는 github에서 ssh를 설정 한 경우 토큰을 건너 뛰고 다음을 사용하십시오. "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax

3
항상 최신 릴리스로 유지하고 있습니까?
SIr Codealot

25
끝에 # 마스터 추가
Jasmine Hegman

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"나를 위해 일하지 않았다. 놀랍게도 토큰과 x-oauth-basic을 전환하여 작업을 수행했습니다. 그래서 "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"나를 위해 일합니다. github이 아닌 gitlab에 있습니다.
misantronic

2
사용자 이름이 필요하지 않으므로 과도하게 https적용 x-oauth-basic됩니다 "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git".
카담

25

누군가 Git Lab에 대한 다른 옵션을 찾고 있는데 위의 옵션이 작동하지 않으면 다른 옵션이 있습니다. Git Lab 서버의 로컬 설치의 경우 아래의 접근 방식을 통해 패키지 종속성을 포함시킬 수 있음을 발견했습니다. 액세스 토큰을 생성하여 사용했습니다.

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

물론 이런 식으로 액세스 키를 사용하는 경우 제한된 권한 집합이 있어야합니다.

행운을 빕니다!


8

git에는 https 형식이 있습니다

https://github.com/equivalent/we_demand_serverless_ruby.git

이 형식은 사용자 + 비밀번호를 허용합니다

https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git

따라서 봇처럼 사용할 새 사용자를 만들고 NPM 모듈에로드하려는 리포지토리를 읽을 수있는 충분한 권한 만 추가하면됩니다. packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

범위 선택 파트에서 on repo : 개인 저장소의 모든 권한을 확인하십시오.

이는 토큰이 사용자가 볼 수있는 개인 저장소에 액세스 할 수 있도록하기위한 것입니다.

이제 조직에서 새 그룹을 만들고이 사용자를 그룹에 추가하고이 방법으로 가져올 것으로 예상되는 리포지토리 만 추가하십시오 (읽기 전용 권한!).

이 설정 을 개인 저장소에만 푸시해야합니다

그런 다음 이것을 / packages.json에 추가 할 수 있습니다 (bot-user는 사용자 이름, xxxxxxxxx는 생성 된 개인 토큰입니다)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html


1
그렇다면이 개인용 액세스 토큰을 커밋하고 Travis CI와 같은 방식으로 사용하는 것이 안전합니까?
Con Antonakos

@ConAntonakos 프로젝트가 Github 개인 리포지토리이고 개인 Github 프로젝트 리포지토리를 실행하는 Travis CI를 지불 한 경우 예 (공개적으로 자격 증명을 공유하지 않으므로) 기억해야 할 사항은 생성하고 사용해야한다는 것입니다 이 개인 저장소에 대한 읽기 권한 만있는 새로운 Github 사용자의 자격 증명. 따라서 개인 계정을 사용하지 마십시오 :) ... 노출시 잠금하기 쉬운 봇 사용자 계정을 만듭니다.;) ... 은행 프로젝트를 구축하는 경우 ISO 인증을 통과하지 않으므로 결코 그렇지 않습니다. 심지어 GH에 코드를 저장하지 보안
equivalent8
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.