2013-01-08 10 views
9

Czy można automatycznie pobrać wymagane moduły dla skryptu node.js? Zastanawiam się, czy można wygenerować listę wymaganych modułów dla skryptu node.js (takiego jak ten poniżej) i zainstalować je automatycznie, zamiast instalować je ręcznie, jeden po drugim (używając npm).Czy można automatycznie zainstalować wymagane moduły dla skryptu 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

Możliwy duplikat [możliwe zainstalowanie wszystkich brakujących modułów dla aplikacji węzła?] (http://stackoverflow.com/questions/13189239/possible-to-install-all-missing- modules-for-a-node-application) –

Odpowiedz

13

Tak, jest to świetny kawałek kodu nazywa NPM za dokładnie to: https://npmjs.org/

określić pakiety zależne w pliku package.json (see the docs dla składni) i można korzystać npm install . wyciągnąć je wszystkie natychmiast, a następnie require ich ze swojego skryptu.

Package.json strona składnia: https://docs.npmjs.com/getting-started/using-a-package.json

Po pierwszym zainstalowaniu modułu, Twój może dostarczyć dowolną liczbę modułów do zainstalowania, a następnie dodaj --save argument automatycznie dodać go do package.json

npm i --save dnode request bluebird 

następnym razem ktoś wykona npm i zostanie ona automatycznie zainstalować wszystkie moduły podany w package.json

+0

Czy istnieje sposób wygenerowania listy zależności dla skryptu, który nie ma powiązanego z nim pliku 'package.json'? Właśnie tego naprawdę próbuję się tu dowiedzieć, ponieważ pracuję tylko nad jednym plikiem. –

+0

Mam nadzieję, że byłoby możliwe wygenerowanie pliku 'package.json' dla modułu, który nie ma jeszcze skojarzonego z nim pliku' package.json'. –

+1

Jeśli masz problem z wymaganiem wszystkich modułów na początku skryptu, dlaczego nie chcesz po prostu nagrać tych plików w pliku pakietu? Czy przechodzisz po pewnym automatyzowanym sposobie analizowania i pobierania zależności skryptu podczas wykonywania? 'package.json' jest również przydatny, ponieważ możesz określić wersje swoich zależności i upewnić się, że rzeczy nie ulegną awarii, gdy skrypt zostanie uruchomiony w przyszłości. –

6

mam w Ritten skrypt do tego

(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){ 
       } 
      }) 
     } 
    } 
})() 
Powiązane problemy