Come installare direttamente un pacchetto npm da GitHub?

Il tentativo di installare i moduli da github risulta in:

ENOENT errore su package.json.

Facilmente riprodotto utilizzando express:

npm install https://github.com/visionmedia/express genera errore.

npm install express works.

    Perché non posso installare da github?

    Ecco l’output della console:

     npm http GET https://github.com/visionmedia/express.git npm http 200 https://github.com/visionmedia/express.git npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz npm ERR! Error: ENOENT, open '/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json' npm ERR! If you need help, you may report this log at: npm ERR!  npm ERR! or email it to: npm ERR!  npm ERR! System Linux 3.8.0-23-generic npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git" npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename npm ERR! node -v v0.10.10 npm ERR! npm -v 1.2.25 npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json npm ERR! code ENOENT npm ERR! errno 34 npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log npm ERR! not ok code 0 

    Perché https://github.com/visionmedia/express è l’URL di una pagina web e non un modulo npm. Usa questo sapore:

     git+https://[email protected]/visionmedia/express.git 

    o questo sapore se hai bisogno di SSH:

     git+ssh://[email protected]/visionmedia/express.git 

    È anche ansible eseguire npm install visionmedia/express per l’installazione da Github

    o

     npm install visionmedia/express#branch 

    C’è anche il supporto per l’installazione direttamente da Gist, Bitbucket, Gitlab e una serie di altri formati specializzati. Guarda la documentazione di npm install per tutti loro.

    Se git non è installato, possiamo provare

     npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master 

    C’è anche npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH} per utilizzare un ramo diverso.

    AGGIORNAMENTO SETTEMBRE 2016

    L’installazione dagli URL github di vaniglia https ora sembra funzionare:

     npm install https://github.com/fergiemcdowall/search-index.git 

    EDIT: ci sono un paio di utenti che commentano che non puoi farlo per tutti i moduli perché stai leggendo da un sistema di controllo del codice sorgente, che potrebbe contenere codice non valido / non compilato / buggato. Quindi, per essere chiari (anche se dovrebbe essere ovvio): dato che il codice nel repository è in uno stato utilizzabile in npm , ora puoi tranquillamente installarlo direttamente da github

    L’attuale risposta migliore di Peter Lyons non è pertinente con le recenti versioni di NPM. Ad esempio, utilizzando lo stesso comando che è stato criticato in questa risposta ora sta bene.

     $ npm install https://github.com/visionmedia/express 

    Se hai problemi continui potrebbe essere un problema con qualsiasi pacchetto che stavi usando.

    I metodi sono trattati abbastanza bene ora nella documentazione di installazione di npm oltre alle numerose altre risposte qui.

     npm install git+ssh://[email protected]:/] npm install git+ssh://[email protected]:/[#semver:^xx] npm install git+https://[email protected]// npm install git://github.com// npm install github:/[#] 

    Tuttavia, qualcosa di notevole che è cambiato di recente è npm aggiungendo lo script di prepare per sostituire lo script prepublish . Questo risolve un problema di vecchia data in cui i moduli installati tramite git non prepublish script prepublish e quindi non completavano i passi di costruzione che si verificano quando un modulo viene pubblicato nel registro di npm. Vedi https://github.com/npm/npm/issues/3055 .

    Ovviamente, gli autori dei moduli dovranno aggiornare il loro package.json per utilizzare la nuova direttiva prepar per farlo funzionare.

    Installalo direttamente:

     npm install visionmedia/express 

    In alternativa, è ansible aggiungere "express": "github:visionmedia/express" alla sezione "dependencies" del file package.json , quindi eseguire:

     npm install 

    La forma generale della syntax è

     ://[[:]@][:][:][/][# | #semver:] 

    che significa per il tuo caso lo sarà

     npm install git+ssh://[email protected]/visionmedia/express.git 

    Da documenti npmjs:

    installazione di npm:

    Installa il pacchetto dal provider git ospitato, clonandolo con git. Per un URL remoto completo git, verrà tentato solo quell’URL.

     ://[[:]@][:][:][/][# 

    | #semver:] è uno di git, git + ssh, git + http, git + https o git + file.

    Se # viene fornito, verrà usato per clonare esattamente quel commit. Se commit-ish ha il formato #semver :, può essere qualsiasi intervallo di semiraggi valido o versione esatta, e npm cercherà qualsiasi tag o riferimento che corrisponda all’intervallo nel repository remoto, proprio come farebbe per una dipendenza del registro. Se né # né

    semver: viene specificato, quindi viene utilizzato il master.

    Se il repository utilizza i sottomoduli, anche questi sottomoduli verranno clonati.

    Se il pacchetto che viene installato contiene uno script di preparazione, verranno installate le sue dipendenze e devDependencies e verrà eseguito lo script di preparazione, prima che il pacchetto sia impacchettato e installato.

    Le seguenti variabili di ambiente git sono riconosciute da npm e verranno aggiunte all’ambiente durante l’esecuzione di git:

    • GIT_ASKPASS
    • GIT_EXEC_PATH
    • GIT_PROXY_COMMAND
    • GIT_SSH
    • GIT_SSH_COMMAND
    • GIT_SSL_CAINFO GIT_SSL_NO_VERIFY

    Vedi la pagina man di git per i dettagli.

    Esempi:

     npm install git+ssh://[email protected]:npm/npm.git#v1.0.27 npm install git+ssh://[email protected]:npm/npm#semver:^5.0 npm install git+https://[email protected]/npm/npm.git npm install git://github.com/npm/npm.git#v1.0.27 GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git npm install 

    Potresti anche farlo

     npm i alex-cory/fasthacks 

    o

     npm i github:alex-cory/fasthacks 

    Fondamentalmente:

     npm i user_or_org/repo_name 

    AGGIORNA ora puoi fare: npm install git://github.com/foo/bar.git
    o in package.json :

     "dependencies": { "bar": "git://github.com/foo/bar.git" } 

    È ansible installare direttamente un repository github tramite il comando npm install , ad esempio: npm install https://github.com/futurechallenger/npm_git_install.git --save

    NOTA: nel repository che verrà installato dal comando npm:

    1. forse dovresti avere una cartella dist in te repo, secondo il commento di @Dan Dascalescu.
    2. Devi assolutamente avere un pacchetto. Json nel tuo repository! che dimentico di aggiungere.

    Prova questo comando

      npm install github:[Organisation]/[Repository]#[master/BranchName] -g 

    questo comando ha funzionato per me.

      npm install github:BlessCSS/bless#3.x -g