2016-10-14 63 views

回答

1

我覺得沒有辦法讓這些東西有一些內置模塊

但是你可以編寫自己的代碼來獲得這些信息,並更新在自己的package.json文件

var fs = require("fs"); 

function getPackageInfo() { 
    fs.readdir("./node_modules", function(err, module) { 
    if (err) { 
     console.log(err); 
     return; 
    } 
    console.log(module) 
    module.forEach(function(dir) { 
     if (dir.indexOf(".") !== 0) { 
     var packageFile = "./node_modules/" + dir + "/package.json"; 
     if (fs.existsSync(packageFile)) { 
      fs.readFile(packageFile, function(err, data) { 
      if (err) { 
       console.log(err); 
      } else { 
       var json = JSON.parse(data); 
       console.log('"' + json.name + '": "' + json.version + '",'); 
      } 
      }); 
     } 
     } 
    }); 

    }); 
} 

getPackageInfo(); 

輸出

"setprototypeof": "1.0.1", 
"raw-body": "2.1.7", 
"source-map": "0.4.4", 
"statuses": "1.3.0", 
"transformers": "2.1.0", 
"type-is": "1.6.13", 
"methods": "1.1.2", 
"uglify-js": "2.7.3", 
"uglify-to-browserify": "1.0.2", 
"utils-merge": "1.0.0", 
"unpipe": "1.0.0", 
"vary": "1.0.1", 
"void-elements": "2.0.1", 
"with": "4.0.3", 
"window-size": "0.1.0", 
"wordwrap": "0.0.3", 
"yargs": "3.10.0", 
"mime-db": "1.24.0", 
................... 
.................. 
.................. 
................. 

您還可以使用

npm list --depth=0

命令由child_process spawn

+0

該解決方案是讓包列表和版本因爲沒有可用的直接方法,所以作爲解決方法很好。但是這可能會有問題,因爲現在npm(新版本> = v3)會創建扁平化樹,結果這個代碼會生成一個更大的依賴關係樹,然後實際生成。 – Pankaj

+0

你也可以使用'npm list --depth = 0'命令來獲取軟件包列表和版本,使用* shelljs *或* child_process spawn *代替文件夾和文件遍歷 –

+0

同意,我們仍然需要做一些事情來獲得它完成。但你的觀點是正確的我正在更新我的答案 – abdulbarik

相關問題