Comment utiliser le dépôt Github privé comme dépendance npm

203

Comment puis-je inscrire une prise en pension Github privée comme "dependency"dans package.json? J'ai essayé les syntaxes des URL Github de npm comme ryanve/example, mais faire npm installdans le dossier du package donne des erreurs "impossible d'installer" pour les dépendances privées. Existe-t-il une syntaxe spéciale (ou un autre mécanisme) pour dépendre des dépôts privés?

ryanve
la source

Réponses:

284

Cela peut être fait via https et oauth ou ssh.

https et oauth: créez un jeton d'accès qui a une portée "repo" puis utilisez cette syntaxe :

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

ou

ssh: configurez ssh puis utilisez cette syntaxe:

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

(notez l'utilisation de deux points au lieu d'une barre oblique avant l'utilisateur)

ryanve
la source
19
Ou si vous avez configuré ssh sur github, sautez le jeton et utilisez: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax
3
Comment avez-vous toujours la dernière version?
SIr Codealot
25
Ajoutez #master à la fin
Jasmine Hegman
4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"N'a pas travaillé pour moi. Étonnamment, le changement de jeton et de x-oauth-basic a fait le travail. Donc ça "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"marche pour moi. veuillez noter que je suis sur gitlab et non sur github.
misantronic
2
Au cours de la httpsmise x-oauth-basiccomme nom d' utilisateur n'est pas nécessaire: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"fonctionne aussi bien.
kadam
25

Si quelqu'un cherche une autre option pour Git Lab et que les options ci-dessus ne fonctionnent pas, nous avons une autre option. Pour une installation locale du serveur Git Lab, nous avons constaté que l'approche ci-dessous nous permet d'inclure la dépendance du package. Pour ce faire, nous avons généré et utilisé un jeton d'accès.

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

Bien sûr, si l'on utilise une clé d'accès de cette façon, elle doit avoir un ensemble limité d'autorisations.

Bonne chance!

Steve M
la source
8

Avec git il y a un format https

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

Ce format accepte l'utilisateur + mot de passe

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

Donc, ce que vous pouvez faire est de créer un nouvel utilisateur qui sera utilisé uniquement comme un bot , ajoutez seulement suffisamment d'autorisations pour qu'il puisse simplement lire le référentiel que vous souhaitez charger dans les modules NPM et juste l'avoir directement dans votre packages.json

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

Dans la partie Select Scopes, cochez la case on repo : Full control of private repositories

Ceci afin que le jeton puisse accéder aux dépôts privés que l'utilisateur peut voir

Maintenant, créez un nouveau groupe dans votre organisation, ajoutez cet utilisateur au groupe et ajoutez uniquement les référentiels que vous prévoyez d'être extraits de cette façon (autorisation LIRE UNIQUEMENT!)

Vous devez être sûr de pousser cette configuration uniquement vers un dépôt privé

Ensuite, vous pouvez l'ajouter à votre / packages.json (bot-user est le nom de l'utilisateur, xxxxxxxxx est le jeton personnel généré)

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

équivalent8
la source
1
Alors, est-il sûr de valider ce jeton d'accès personnel et de l'utiliser dans quelque chose comme Travis CI?
Con Antonakos
@ConAntonakos si le projet est un référentiel privé Github et que vous avez payé Travis CI qui exécute votre référentiel de projet Github privé, alors oui (en quelque sorte, car vous ne partagez pas vos informations d'identification publiquement) Une autre chose à retenir est que vous devez créer et utiliser les informations d'identification du nouvel utilisateur Github qui n'a qu'un accès en lecture à ce dépôt privé. Alors n'utilisez pas votre compte personnel :) ... créez un compte utilisateur bot qui est plus facile à verrouiller en cas d'exposition;) ... Si vous construisez un projet bancaire, cela ne passera pas l'accréditation ISO, alors non ce n'est jamais sécurisé ne stocke même pas le code sur GH
équivalent8