web-dev-qa-db-fra.com

Comment utiliser le repo Github privé en tant que dépendance npm

Comment lister un dépôt Github privé en tant que "dependency" dans package.json? J'ai essayé les syntaxes de les URL Github de npm telles que ryanve/example, mais le fait de npm install dans le dossier du paquet donne des erreurs "impossible à installer" pour les dépendances privées. Existe-t-il une syntaxe spéciale (ou un autre mécanisme) pour dépendre des pensions privées?

174
ryanve

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

https et oauth: créer un jeton d'accès ayant la portée "repo" et tilisez ensuite cette syntaxe = =:

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

ou

ssh: setup ssh puis utilisez cette syntaxe:

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

(notez l'utilisation de deux points au lieu de slash avant l'utilisateur)

247
ryanve

Si quelqu'un recherche 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 paquet. Nous avons généré et utilisé un jeton d'accès pour le faire.

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

Bien sûr, si vous utilisez une clé d'accès de cette manière, elle devrait disposer d'un ensemble d'autorisations limité.

Bonne chance!

21
Steve M

Avec git, il existe un format https

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

Ce format accepte l'utilisateur + mot de passe

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

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

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

Dans la partie Sélection des étendues, vérifiez le repo sur : Contrôle total des référentiels privés

C’est pour que le jeton puisse accéder aux pensions privées que l’utilisateur peut voir.

Créez maintenant un nouveau groupe dans votre organisation, ajoutez cet utilisateur au groupe et ajoutez uniquement les référentiels que vous espérez extraire de cette manière (autorisation READ ONLY!).

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

Ensuite, vous pouvez ajouter ceci à 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:[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

6
equivalent8