Verwendung des privaten Github-Repos als npm-Abhängigkeit

203

Wie liste ich ein privates Github-Repo als "dependency"In auf package.json? Ich habe versucht, die Github-URLs- Syntax von npm wie zu verwenden ryanve/example, aber npm installim Paketordner werden Fehler für die privaten Abhängigkeiten angezeigt , die nicht installiert werden konnten. Gibt es eine spezielle Syntax (oder einen anderen Mechanismus) für die Abhängigkeit von privaten Repos?

Ryanve
quelle

Antworten:

284

Dies kann über https und oauth oder ssh erfolgen.

https und oauth: Erstellen Sie ein Zugriffstoken mit dem Bereich "Repo" und verwenden Sie dann diese Syntax :

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

oder

ssh: richte ssh ein und verwende dann diese Syntax:

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

(Beachten Sie die Verwendung eines Doppelpunkts anstelle eines Schrägstrichs vor dem Benutzer.)

Ryanve
quelle
19
Oder wenn Sie SSH bei Github eingerichtet haben, überspringen Sie den Token und verwenden Sie: "<package>": "git+ssh://[email protected]/<user>/<repo>.git
Steveax
3
Wie haben Sie es immer auf die neueste Version?
SIr Codealot
24
Fügen Sie #master zum Ende hinzu
Jasmine Hegman
4
"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"hat bei mir nicht funktioniert. Überraschenderweise hat das Wechseln von Token und x-oauth-basic den Job gemacht. Also "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"funktioniert für mich. Bitte beachte, dass ich auf Gitlab und nicht auf Github bin.
Misantronic
2
Ein httpsÜberschreiben x-oauth-basicals Benutzername ist nicht erforderlich: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"funktioniert auch.
Kadam
25

Wenn jemand nach einer anderen Option für Git Lab sucht und die oben genannten Optionen nicht funktionieren, haben wir eine andere Option. Bei einer lokalen Installation des Git Lab-Servers haben wir festgestellt, dass der folgende Ansatz es uns ermöglicht, die Paketabhängigkeit einzuschließen. Wir haben dazu ein Zugriffstoken generiert und verwendet.

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

Wenn man einen Zugriffsschlüssel auf diese Weise verwendet, sollte er natürlich nur über begrenzte Berechtigungen verfügen.

Viel Glück!

Steve M.
quelle
8

Mit git gibt es ein https-Format

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

Dieses Format akzeptiert Benutzer + Passwort

https://bot-user:[email protected]/equivalent/we_demand_serverless_ruby.git

Sie können also einen neuen Benutzer erstellen, der nur als Bot verwendet wird, nur so viele Berechtigungen hinzufügen, dass er nur das Repository lesen kann, das Sie in NPM-Module laden möchten, und das direkt in Ihrem packages.json

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

Überprüfen Sie im Bereich Bereiche auswählen das On- Repo : Volle Kontrolle über private Repositorys

Auf diese Weise kann das Token auf private Repos zugreifen, die der Benutzer sehen kann

Erstellen Sie nun eine neue Gruppe in Ihrer Organisation, fügen Sie diesen Benutzer der Gruppe hinzu und fügen Sie nur Repositorys hinzu, von denen Sie erwarten, dass sie auf diese Weise abgerufen werden (NUR READ-Berechtigung!).

Sie müssen sicherstellen, dass diese Konfiguration nur auf privates Repo übertragen wird

Dann können Sie dies zu Ihrer / packages.json hinzufügen (Bot-Benutzer ist der Name des Benutzers, xxxxxxxxx ist das generierte persönliche Token)

// 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

Äquivalent8
quelle
1
Ist es also sicher, dieses persönliche Zugriffstoken festzuschreiben und es in Travis CI zu verwenden?
Con Antonakos
@ConAntonakos Wenn das Projekt ein privates Github-Repository ist und Sie Travis CI bezahlt haben, das Ihr privates Github-Projekt-Repository ausführt, dann ja (irgendwie, da Sie Ihre Anmeldeinformationen nicht öffentlich teilen) Anmeldeinformationen eines neuen Github-Benutzers, der nur Lesezugriff auf dieses private Repo hat. Verwenden Sie also nicht Ihr persönliches Konto :) ... erstellen Sie ein Bot-Benutzerkonto, das im Falle einer Gefährdung einfacher zu sperren ist;) ... Wenn Sie ein Bankprojekt erstellen, wird die ISO-Akkreditierung nicht bestanden, also nein, es ist nie sicher nicht einmal Code auf GH speichern
Äquivalent8