비공개 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.