Jak korzystać z prywatnego repozytorium Github jako zależności npm


203

Jak wylistować prywatną repo GitHub jako "dependency"IN package.json? Próbowałem KMP w Github adresy URL składnie jak ryanve/example, ale robi npm installsię w folderze pakietu daje „nie można zainstalować” błędów dla prywatnych zależności. Czy istnieje specjalna składnia (lub jakiś inny mechanizm) do polegania na prywatnych repozytoriach?

Odpowiedzi:


284

Można to zrobić za pośrednictwem https i oauth lub ssh.

https i oauth: utwórz token dostępu o zasięgu „repo”, a następnie użyj następującej składni :

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

lub

ssh: ustaw ssh, a następnie użyj tej składni:

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

(zwróć uwagę na użycie dwukropka zamiast ukośnika przed użytkownikiem)


19
Lub jeśli masz skonfigurowane ssh w github, pomiń token i użyj: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax

3
Jak masz to zawsze w najnowszej wersji?
SIr Codealot

25
Dodaj #mastera do końca
Jasmine Hegman

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"nie działało dla mnie. Zaskakująco zmieniło się token i x-oauth-basic. Więc "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"działa dla mnie. pamiętaj, że jestem na gitlab, a nie na github.
misantronic

2
Ponad httpsoddanie x-oauth-basicjako nazwa użytkownika nie jest konieczne: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"działa tak samo.
kadam

25

Jeśli ktoś szuka innej opcji dla Git Lab i powyższe opcje nie działają, mamy inną opcję. W przypadku lokalnej instalacji serwera Git Lab odkryliśmy, że poniższe podejście pozwala nam uwzględnić zależność od pakietu. Wygenerowaliśmy w tym celu token dostępu.

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

Oczywiście, jeśli ktoś używa klucza dostępu w ten sposób, powinien mieć ograniczony zestaw uprawnień.

Powodzenia!


8

W git istnieje format https

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

Ten format akceptuje Użytkownik + hasło

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

Możesz więc stworzyć nowego użytkownika, który będzie używany jako bot , dodać tylko tyle uprawnień, aby mógł po prostu odczytać repozytorium, które chcesz załadować w modułach NPM i mieć to bezpośrednio w twoim packages.json

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

W części Wybierz zakresy zaznacz opcję repozytorium : pełna kontrola prywatnych repozytoriów

Dzięki temu token może uzyskać dostęp do prywatnych repozytoriów, które użytkownik może zobaczyć

Teraz utwórz nową grupę w swojej organizacji, dodaj tego użytkownika do grupy i dodaj tylko repozytoria, które mają zostać pobrane w ten sposób (CZYTAJ TYLKO pozwolenie!)

Musisz koniecznie przekazać tę konfigurację tylko do prywatnego repozytorium

Następnie możesz dodać to do pliku / packages.json (bot-user to nazwa użytkownika, xxxxxxxxx to wygenerowany token osobisty)

// 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
Czy więc bezpiecznie jest zatwierdzić ten osobisty token dostępu i użyć go w czymś takim jak Travis CI?
Con Antonakos

@ConAntonakos, jeśli projekt jest prywatnym repozytorium Github i zapłaciłeś Travis CI, który prowadzi twoje prywatne repozytorium projektu Github, to tak (oczywiście, ponieważ nie udostępniasz publicznie swoich danych uwierzytelniających) Należy również pamiętać, że musisz utworzyć i używać poświadczenia nowego użytkownika Github, który ma dostęp tylko do odczytu do tego prywatnego repozytorium. Więc nie używaj swojego konta osobistego :) ... utwórz konto użytkownika bota, które łatwiej jest zablokować w przypadku ekspozycji;) ... Jeśli budujesz projekt bankowy, nie przejdzie on akredytacji ISO, więc nie, to nigdy zabezpiecz nawet nie przechowuj kodu na GH
odpowiednik
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.