Come utilizzare il repository Github privato come dipendenza npm


203

Come posso elencare un repository Github privato come "dependency"in package.json? Ho provato la sintassi degli URL Github di npm come ryanve/example, ma fare npm installnella cartella del pacchetto dà errori "impossibile installare" per le dipendenze private. Esiste una sintassi speciale (o qualche altro meccanismo) per dipendere dai repository privati?

Risposte:


284

Può essere fatto tramite https e oauth o ssh.

https e oauth: crea un token di accesso con ambito "repo" e quindi utilizza questa sintassi :

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

o

ssh: installa ssh e quindi usa questa sintassi:

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

(notare l'uso dei due punti anziché della barra prima dell'utente)


19
Oppure, se hai impostato ssh su github, salta il token e usa: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax,

3
Come lo hai sempre aggiornato all'ultima versione?
Sr Codealot,

25
Aggiungi #master alla fine
Jasmine Hegman,

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"Non ha funzionato per me. Il passaggio sorprendentemente token e x-oauth-basic hanno fatto il lavoro. Quindi, "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"funziona per me. per favore nota che sono su gitlab e non su github.
misantronic

2
Nel corso httpsmettendo x-oauth-basiccome il nome utente non è necessaria: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"funziona pure.
kadam,

25

Se qualcuno sta cercando un'altra opzione per Git Lab e le opzioni sopra non funzionano, allora abbiamo un'altra opzione. Per un'installazione locale del server Git Lab, abbiamo scoperto che l'approccio, di seguito, ci consente di includere la dipendenza del pacchetto. Per farlo abbiamo generato e utilizzato un token di accesso.

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

Naturalmente, se si utilizza una chiave di accesso in questo modo, dovrebbe disporre di un set limitato di autorizzazioni.

In bocca al lupo!


8

Con git esiste un formato https

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

Questo formato accetta Utente + password

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

Quindi quello che puoi fare è creare un nuovo utente che verrà utilizzato solo come bot , aggiungere solo le autorizzazioni sufficienti per poter leggere il repository che vuoi caricare nei moduli NPM e averlo direttamente nel tuo packages.json

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

Nella parte Seleziona ambiti, selezionare il repository on : controllo completo dei repository privati

In questo modo il token può accedere ai repository privati ​​che l'utente può vedere

Ora crea un nuovo gruppo nella tua organizzazione, aggiungi questo utente al gruppo e aggiungi solo i repository che prevedi vengano estratti in questo modo (autorizzazione SOLO LEGGI!)

Devi essere sicuro di inviare questa configurazione solo al repository privato

Quindi puoi aggiungerlo al tuo / pacchetti.json (bot-user è il nome dell'utente, xxxxxxxxx è il token personale generato)

// 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
Quindi, è sicuro eseguire il commit di questo token di accesso personale e utilizzarlo in qualcosa come Travis CI?
Con Antonakos,

@ConAntonakos se il progetto è un repository privato Github e hai pagato Travis CI che esegue il tuo repository privato del progetto Github quindi sì (tipo, poiché non stai condividendo pubblicamente le tue credenziali) Anche la cosa da ricordare è che devi creare e utilizzare credenziali del nuovo utente Github che ha accesso in sola lettura a questo repository privato. Quindi non usare il tuo account personale :) ... crea un account utente bot che è più facile da bloccare in caso di esposizione;) ... Se stai costruendo un progetto bancario, questo non passerà l'accreditamento ISO, quindi no, non lo è mai assicurati di non archiviare nemmeno il codice su GH
equivalente
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.