簡體   English   中英

顯示package.json中的依賴項

[英]Display the dependencies from package.json

有沒有辦法可以顯示我們在nodejs中安裝的Express,Jade,Stylus ..的版本。 捕獲當前版本並在瀏覽器中顯示。

謝謝

基本上很簡單

$ npm ls

做你想做的事情:它以遞歸的方式為你提供所有已安裝模塊,它們的版本以及它們的依賴關系的列表。

正如你所要的那種在瀏覽器有效的解決方案:最簡單的解決方案將可能使用到運行該命令從Node.js的一個子進程child_process模塊 ,以及孩子的標准輸出屬性到HTTP服務器的響應流。

然后在瀏覽器中獲得npm ls的輸出。

基本框架如下所示:

var spawn = require('child_process').spawn,
    http = require('http');

http.createServer(function (req, res) {
  var npm = spawn('npm', [ 'ls' ]);
  npm.stdout.pipe(res);
}).listen(3000);

當然你可以讓它更好,更舒適,等等:-)

來自評論的更新:

var npm = spawn('npm', [ 'ls', '--json' ]);

盡管Golo Roden的回復描述了一種有效的方式,但我認為打開一個單獨的過程只是為了閱讀一個版本太多了。

你是專門詢問package.json中的版本,那你為什么不讀這個文件並解析呢? 我成功地設法使用fs模塊。 這是我的應用程序:

var application_root = __dirname,
    express = require('express'),
    path = require('path'),
    fs = require('fs');

var app = express();

app.configure(function () {
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(application_root, "public")));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.get('/api', function (req, res) {
    fs.readFile(application_root + '/package.json', function(err, fd) {
        console.log(err);
        console.log(fd);
        res.send('File data: ' + fd);
    });
});

app.listen(4242);

當您請求/ api URL時,這將在根文件夾中顯示package.json文件的內容。 如果您只想要特定依賴項的版本,則始終可以在回調中查詢fd對象的屬性並顯示該屬性。

當然這里的缺點是它總是會讀取文件而不是使用npm中的“真實”版本,但是由於你的節點應用程序無論如何都要讀取文件,我不明白為什么不這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM