2015-04-21 20 views
8

Quello che sto cercando di fare è scaricare pacchetti con tutte le loro dipendenze, per trasferirli su un altro computer che non ha una connessione internet e installarlo lì.Uso di npm come posso scaricare un pacchetto come zip con tutte le sue dipendenze incluse nel pacchetto

Quindi lo scenario sarebbe:

  1. pacchetto di download (per zip/tarball/qualunque file) senza installarlo.

  2. Incluso nel file scaricato ci sono tutte le sue dipendenze (versioni corrette e dipendenze delle dipendenze).

  3. Trasferire il file su un altro computer.

  4. Eseguire il file npm install in posizione file (opzionale -g).

  5. Il pacchetto è installato con dipendenze.

  6. Happy camper.

Mi sembra che ci debba essere un comando npm per scaricare e impacchettare (creare) file in questo modo.

Ho provato a cercare una soluzione per questo senza successo.

Questa è la prima volta che utilizzo il nodo, quindi temo di non effettuare ricerche in modo corretto perché non conosco il nodo/ning.

risposta

1

ho appena usato this gist by Jack Gill di fare esattamente ciò che si descrive - impacchettare un pacchetto, con tutte le sue dipendenze. Fondamentalmente ciò che lo script fa è riscrivere il file package.json di un modulo per spostare tutti i suoi dependencies a bundleDependencies, quindi imballare il tutto. Carica il tarball risultante sul tuo server, quindi su npm install. Funziona a meraviglia.

+0

Tipo di fastidio che questa funzionalità non è stata ancora aggiunta a npm senza ricorrere agli hack. – endemic

1

Basta eseguire npm install nella directory del pacchetto e archiviarne la totalità. Supponendo che non ci siano requisiti non npm necessari per la carne e che entrambe le macchine eseguano la stessa versione di nodo, non c'è bisogno di fare altro. Tutte le dipendenze scaricate verranno installate all'interno dello ./node_modules. Ma è generalmente una buona idea archiviare l'intero pacchetto, poiché lo sviluppatore potrebbe aver implementato alcune routine di installazione aggiuntive.

+0

Cosa succede se il pacchetto è necessario come globale (vale a dire grunt)? Ho provato 'npm i -g' nella directory del pacchetto della nuova macchina. –

+0

@l__flex__l I pacchetti globali di npm non sono quasi mai necessari. È possibile installarli localmente ed eseguire, ad esempio, './Node_modules/.bin/grunt' – user33946

+0

Come si suppone che questo pacchetto non abbia hook di installazione dannoso? Ci sono motivi per cui qualcuno potrebbe voler scaricare il pacchetto come zip. –

1
  1. Scaricare il pacchetto su una macchina con Internet.

  2. Assicurati che il pacchetto dell'app abbia un file package.json alla radice con tutte le dipendenze elencate in esso. È possibile rendere npm salvare le proprie dipendenze in package.json facendo npm install dependency-name --save. Il flag --save farà sì che npm scriva la dipendenza dal file package.json della tua app se ne ha uno. Se non ha acceso, non farà nulla. Puoi anche istruire npm per creare un file package.json per la tua app se devi semplicemente eseguire npm init nella directory della tua app.

  3. Eseguire npm install dall'interno della directory dell'app. Ciò creerà la directory node_modules e installerà tutte le dipendenze elencate nel file package.json dell'app.

  4. Chiudere la directory ora che contiene una directory node_modules con tutte le dipendenze installate. Trasferisci l'archivio zip su un'altra macchina.

  5. Basta decomprimere l'archivio nella sua destinazione finale e il gioco è fatto. L'app è ora dove deve essere e le dipendenze sono già installate.

  6. Ora basta eseguire l'applicazione con node app.js, sostituendo "app.js" con qualunque sia il nome del file del punto di ingresso principale dell'app.

Problemi correlati