2016-07-07 45 views
11

So come fare una dipendenza NPM da una versione GitHub:NPM install/dipendenza da un GitHub versione binaria

"dependencies": { 
    "package-name": "user/repo#v1.0.0" 
} 

Che bello, ma voglio installare un specifica binario da questa release .

ho cercato

"dependencies": { 
    "package-name": "https://github.com/user/repo/releases/download/v1.0.0/bin.tgz" 
} 

ma mi dà il seguente errore:

❯ npm install 
npm ERR! fetch failed https://github.com/user/repo/releases/download/v1.0.0/bin.tgz 
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404 

beni versione binaria exist outside of GitHub e stanno utilizzando AWS S3.

L'URL github.com/user/repo/releases/download/v1.0.0/bin.tgz reindirizza con uno stato 302 e un'intestazione posizione HTTP impostato https://github-cloud.s3.amazonaws.com/releases/XXX/XXX...

Se provo direttamente con l'URL S3 ho ottenuto un errore di ENAMETOOLONG (see NPM issue):

> npm install https://github-cloud.s3.amazonaws.com/releases/XXX/XXX... 
npm ERR! tarball.destroy is not a function 
npm WARN retry will retry, error on last attempt: Error: ENAMETOOLONG: name too long, open '/var/folders/pn/...... 

domande:

  • Perché NPM non è fo permettendo il reindirizzamento?
  • Perché uno 404?
  • C'è un modo per collegare una dipendenza NPM a un tarball binario della release di GitHub? Come?

mio contesto e le esigenze:

  • Ho un repository GitHub privato
  • Il mio pacchetto deve essere costruito prima del "distribuzione" (transpilation, etc.)
  • voglio per "pubblicare" un tarball di questa build nella mia versione di GitHub e fare direttamente riferimento alle mie dipendenze NPM
  • Io uso un servizio CI per costruire, fare il tarball e caricarlo vicino al GitHub rilasciare
  • Vorrei usare GitHub versione binaria come un repository NPM

correlati

risposta

1

I rilasci di Github sono basati su tag Git.

"... Le versioni si basano sui tag Git ."

https://help.github.com/articles/creating-releases/

Per specificare una versione con un URL Git, includere un caso, ad esempio un tag, alla fine, come un frammento URL Esempio, per un tag di nome 0.3.1:.

"dependencies": { 
    "myprivatemodule": "[email protected]:...#0.3.1" 
} 

La porzione snipped (...) deve essere compilato:

"myprivatemodule": "[email protected]:{owner}/{project}.git#0.3.1" 

E, un altro annuncio formato vestito sarà necessaria quando l'accesso SSH non è disponibile:

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1" 

gentilmente tratto da: npm install from Git in a specific version

0

Il 404 è perché sei un repo privato e non ha incluso l'autenticazione nell'URL.

pubblico repo:

"agentframework": "https://github.com/agentframework/agentframework/releases/download/beta/agentframework-beta.tar.gz" 

repo privato:

  1. Creare un token di accesso privato https://github.com/settings/tokens
  2. Crea il tuo proxy HTTP per scaricare l'asserzione dal rilascio. https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
  3. Aggiungere il proxy HTTP URL al tuo package.json

package.json

{ 
    "name": "test", 
    "version": "1.0.0", 
    "dependencies": { 
    "agentframework": "https://github.com/agentframework/agentframework/releases/download/beta/agentframework-beta.tar.gz" 
    } 
} 

BTW: è possibile utilizzare yarn install che ho usato nei miei progetti

+0

Può spiegare più in dettagli su come impostare il proxy http? – line72

Problemi correlati