2013-01-08 74 views
9

是否可以自動下載node.js腳本所需的模塊?我想知道是否可以爲node.js腳本生成所需模塊的列表(如下所示),並自動安裝它們,而不是手動安裝它們(使用npm)。是否可以自動安裝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

的可能的複製[可以安裝所有缺少的模塊節點應用程序嗎?(http://stackoverflow.com/questions/13189239/possible-to-install-all-missing-模塊爲節點的應用程序) –

回答

13

是的,有很大一塊的代碼中調用NPM正是這種:https://npmjs.org/

您指定一個package.json文件相關的軟件包(see the docs語法),你可以使用npm install .拉他們在所有立刻,然後require他們從您的腳本。

的package.json語法頁:https://docs.npmjs.com/getting-started/using-a-package.json

安裝模塊的第一次,你可以提供任何數量的安裝模塊,並添加--save參數將自動添加到您的package.json

npm i --save dnode request bluebird 

下次有人會執行npm i它會自動安裝您指定的所有模塊package.json

+0

有沒有什麼辦法可以爲沒有'package.json'文件的腳本生成一個依賴關係列表?這正是我真正想在這裏找到的,因爲我只是在處理單個文件。 –

+0

我希望爲一個還沒有與之關聯的'package.json'文件的模塊生成'package.json'文件是可行的。 –

+1

如果你想要在腳本開始時需要所有模塊,爲什麼不把它們記錄在你的包文件中呢?你是否追求一些自動手段來解析和獲取腳本執行期間的依賴關係? 'package.json'也很有用,因爲你可以指定你的依賴的版本,並且確保事情在你的腳本未來運行時不會中斷。 –

6

我有w雷農腳本這個

(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){ 
       } 
      }) 
     } 
    } 
})() 
相關問題