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?

ryanve
źródło

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>:[email protected]/<user>/<repo>.git"

lub

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

"package-name": "git+ssh://[email protected]:<user>/<repo>.git"

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

ryanve
źródło
19
Lub jeśli masz skonfigurowane ssh w github, pomiń token i użyj: "<package>": "git+ssh://[email protected]/<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>:[email protected]/<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!

Steve M.
źródło
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:[email protected]/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:[email protected]/ghuser/name_of_my_lib.git"
  // ...
}

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

odpowiednik 8
źródło
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