Come installare un modulo node.js senza utilizzare npm?


115

Ci sono parecchi moduli che sono elencati nella pagina GitHub del nodo ma non sono pubblicati con il registro npm. Questi moduli non possono essere installati utilizzando npm.

Qual è il modo corretto per installare questi moduli nodejs dopo averli clonati da Git?

Risposte:


73

Devi scaricare la loro fonte da GitHub. Trova il file principale e includilo nel tuo file principale.

Un esempio può essere trovato qui> Come installare manualmente un modulo node.js?

Di solito è necessario trovare la fonte e passare attraverso il file package.json. Lì puoi trovare qual è il file principale. In modo da poterlo includere nella tua applicazione.

Per includere example.js nella tua app. Copiarlo nella cartella dell'applicazione e aggiungerlo all'inizio del file js principale.

var moduleName = require("path/to/example.js")


1
È possibile importare uno script da un URL esterno (come var myscript = require("http://www.mywebsite.com/myscript.js"))? Sembra che la requirefunzione non funzioni per gli URL esterni.
Anderson Green

2
require è effettivamente sincrono, quindi no, non funziona per gli URL esterni.
Chris Tavares

Nota: è necessario rimuovere le -masterlibrerie aggiunte a GitHub; come in modifica xxx-mastera xxx.
BAR

65

Questi moduli non possono essere installati utilizzando npm.

In realtà puoi installare un modulo specificando invece di un nome un percorso locale. Finché il repository ha un package.jsonfile valido , dovrebbe funzionare.


Digita npm -le un grazioso aiuto apparirà così:

CLI:

...
install     npm install <tarball file>
                npm install <tarball url>
                npm install <folder>
                npm install <pkg>
                npm install <pkg>@<tag>
                npm install <pkg>@<version>
                npm install <pkg>@<version range>

                Can specify one or more: npm install ./foo.tgz bar@stable /some/folder
                If no argument is supplied and ./npm-shrinkwrap.json is 
                present, installs dependencies specified in the shrinkwrap.
                Otherwise, installs dependencies from ./package.json.

Ciò che ha attirato la mia attenzione è stato: npm install <folder>

Nel mio caso ho avuto problemi con il mrtmodulo, quindi l'ho fatto (in una directory temporanea)

  • Clona il repo

     git clone https://github.com/oortcloud/meteorite.git
  • E lo installo a livello globale con:

     npm install -g ./meteorite

Mancia:

È anche possibile installare allo stesso modo il repository su un progetto npm locale con:

     npm install ../meteorite

E si può anche creare un collegamento al repository, nel caso sia necessaria una patch in sviluppo:

     npm link ../meteorite

1
eccellente. Avevo problemi anche con un modulo, quindi l'ho biforcato e clonato in una directory di pari livello del mio progetto web, aggiornato tutte le sue dipendenze alle ultime versioni e poi l'ho installato nel mio progetto web con 'npm install ../ broken_module_name Ha funzionato a meraviglia. Grazie!
Perry Tew

+1 ma non funziona se non abbiamo accesso alla rete per npm e il modulo con cui stiamo installando npm install <folder>ha innumerevoli altre dipendenze npm.
Abdul Rauf

Se npm trova il pacchetto in node_modules, dall'ambito globale (non sono sicuro qui) o da quello locale, non tenterà di scaricarlo di nuovo. Ciò significa che se tutte le dipendenze dirette di un repository possono essere pre-scaricate e copiate nella cartella node_module, allora funzionerà.
Tiberiu C.

11

Scarica il codice da GitHub nella directory node_modules

var moduleName = require("<name of directory>")

dovrebbe bastare.

se il modulo ha dipendenze e ha un package.json, apri il modulo e inserisci npm install.

Spero che questo ti aiuti


Penso che questo codice index.js
funzioni

8

Puoi clonare il modulo direttamente nel tuo progetto locale.

Avvia il terminale. cd nel tuo progetto e poi:

npm installa https://github.com/repo/npm_module.git --save


1
La risposta che stavo cercando.
Faisal Mq

Cosa succede quando il pacchetto è stato modificato, come si aggiorna all'ultima versione? ATM, l'unica "soluzione" che ho trovato è stata quella di eliminare il fodler da node_modules, eliminare la voce package.json e riaggiungere, il che è un problema ...
Predrag Stojadinović

1

Passo dopo passo:

  • diciamo che stai lavorando a un progetto use-gulpche utilizza ( requires) node_modulescome gulpe gulp-util.
  • Ora vuoi apportare alcune modifiche a gulp-utillib e testarlo localmente con il tuo use-gulpprogetto ...
  • gulp-utilProgetto fork su github \ bitbucket ecc.
  • Passa al tuo progetto: cd use-gulp/node_modules
  • Clona gulp-utilcome gulp-util-dev:git clone https://.../gulp-util.git gulp-util-dev
  • Esegui npm installper assicurarti che le dipendenze di gulp-util-dev.
  • Ora hai uno specchio di gulp-utilcome gulp-util-dev. Nel tuo use-gulpprogetto, ora puoi sostituire: require('gulp-util')...;call con: require('gulp-util-dev')per testare le modifiche apportategulp-util-dev
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.