2013-01-08 9 views
9

È possibile scaricare automaticamente i moduli richiesti per uno script node.js? Mi chiedo se sia possibile generare un elenco di moduli richiesti per uno script node.js (come quello qui sotto), e installarli automaticamente, invece di installarli manualmente, uno alla volta (usando npm).È possibile installare automaticamente i moduli richiesti per uno script node.js?

#!/usr/bin/env node 

var DNode = require('dnode'); 
var sys = require('sys'); 
var fs = require('fs'); 
var http = require('http'); 

var html = fs.readFileSync(__dirname + '/web.html'); 
var js = require('dnode/web').source(); 

//the rest of this script is omitted. 
+0

Eventuali duplicati di [Possibilità di installare tutti i moduli mancanti per un'applicazione nodo?] (http://stackoverflow.com/questions/13189239/possible-to-install-all-missing- modules-for-a-node-application) –

risposta

13

Sì, c'è un grande pezzo di codice chiamato NPM proprio per questo: https://npmjs.org/

Si specifica pacchetti dipendenti in un file package.json (see the docs per la sintassi) e si può usare npm install . per tirarli in tutta immediatamente, e poi require dal tuo script.

pagina sintassi Package.json: https://docs.npmjs.com/getting-started/using-a-package.json

La prima volta che si installa un modulo, il tuo grado di fornire qualsiasi numero di moduli da installare, e aggiungere l'argomento --save per aggiungere automaticamente al tuo package.json

npm i --save dnode request bluebird 

La prossima volta, che qualcuno eseguirà npm i si installerà automaticamente tutti i moduli di cui il vostro package.json

+0

C'è un modo per generare un elenco di dipendenze per uno script che non ha un file 'package.json' associato ad esso? Questo è quello che sto cercando di scoprire qui, dato che sto lavorando con un singolo file. –

+0

Spero sia possibile generare un file 'package.json' per un modulo che non ha ancora un file' package.json' associato ad esso. –

+1

Se hai intenzione di richiedere tutti i moduli all'inizio dello script, perché non registrarli anche nel file del pacchetto? Stai cercando un modo automatico di analizzare e recuperare le dipendenze del tuo script durante l'esecuzione? 'package.json' è anche utile perché puoi specificare le versioni delle tue dipendenze e assicurarti che le cose non si interrompano quando lo script viene eseguito in futuro. –

6

ho w Ritten uno script per questo

(function(){ 
    var r = require 
    require = function (n){ 
     try{ 
      return r(n) 
     } 
     catch(e){ 
      r('child_process').exec('npm i ' + n,function (err,body){ 
       try{ 
        console.log('Module "' +n + '"" not found, try to install. Please restart the app\n' + body) 
        return r(n) 
       } 
       catch(e){ 
       } 
      }) 
     } 
    } 
})() 
Problemi correlati