2012-11-02 3 views
24

Ich habe eine Knoten-App, mit der ich gerade angefangen habe zu arbeiten, und jedes Mal, wenn ich versuche, sie zu starten, heißt es, dass ein Modul fehlt. Ich habe gerade npm install ... für jedes Modul verwendet, aber nachdem ich ungefähr 10 von ihnen gemacht habe, frage ich mich, ob es eine Möglichkeit gibt, npm alle benötigten Module für eine Knoten-App herunter zu ziehen, ohne dass ich sie manuell installieren muss. Kann es gemacht werden?Kann man alle fehlenden Module für eine Knotenanwendung installieren?

Antwort

35

Ja, solange die Abhängigkeit in package.json aufgeführt ist.

In dem Verzeichnis, das package.json enthält, geben Sie einfach:

npm install 
1

Sie npm install yourModule --save um und aktualisieren package.json mit dieser neu installierten Modul automatisch zu installieren, ausführen können.

Also wenn Sie npm install ein zweites Mal ausführen, wird es alle Abhängigkeiten, die zuvor hinzugefügt wurden, installieren, und Sie müssen nicht jede Abhängigkeit nacheinander neu installieren.

11

Ich habe ein npm-Modul erstellt, um fehlende Module automatisch installieren zu können.

npm-install-missing

Es werden alle App-Abhängigkeiten und Unter Abhängigkeiten automatisch installiert. Dies ist nützlich, wenn Submodule nicht korrekt installiert sind.

+1

Es ist sogar Abhängigkeiten erforderliche Version zu erkennen! – msangel

+0

Wenn ich das versuche, sagt es mir, dass ich keine fehlenden Module habe, obwohl wenn ich npm list ausführen Es ist mit fehlenden und nicht erfüllten Abhängigkeiten geladen –

-1

Ich schrieb ein Skript dafür. Bitte fügen Sie es vor der ersten erfordern Funktion:

(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){ 
       } 
      }) 
     } 
    } 
})() 
+0

das funktioniert gut, aber es schlägt den ersten Lauf, weil die Abhängigkeiten installiert werden, wenn Sie versuchen Führen Sie den Rest der Datei aus. Wie können wir warten, bis das Skript beendet ist, bevor Sie mit dem Rest der Datei beginnen? – Dat30