3
A
回答
4
基本上是一个简单的
$ npm ls
你想要做什么:它给你所有已安装的模块,它们的版本,并与同一信息递归依赖列表。
正如你所要的那种在浏览器有效的解决方案:最简单的解决方案可能会是运行该命令从Node.js的使用child_process module一个子进程,并pipe孩子的stdout属性的响应流一个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' ]);
0
虽然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);
这将显示的package.json文件的内容在你的根文件夹,当你请求/ API URL。如果您只想要特定依赖项的版本,则可以始终查询回调中fd
对象的属性并显示该对象。
当然,这里的缺点是它总是读取文件,而不是使用npm中的'真实'版本,但是由于您的节点应用程序读取文件,我不明白为什么不这样做。
+0
除了你已经提到的缺点之外,还有另一个:你不会得到依赖关系的依赖关系,除非你编程它通过文件夹递归地工作......然后我认为开始一个子进程是肯定的更好的方式去(因为你甚至可以缓存结果,一旦你运行它)。 –
相关问题
- 1. firebase的package.json依赖关系
- 2. Package.JSON文件依赖关系
- 3. 节点package.json依赖关系
- 4. NPM安装来自package.json的依赖关系
- 5. 没有依赖关系的package.json文件?
- 6. ldd是否也显示依赖关系的依赖关系?
- 7. package.json不更新依赖关系
- 8. package.json依赖关系替代源
- 9. Grunt concat所有package.json依赖关系
- 10. NodeJS,NPM和package.json依赖关系
- 11. 捆绑的依赖从package.json拉入自己的依赖关系吗?
- 12. 自动更新package.json中的依赖关系
- 13. 使用来自依赖关系的XSD
- 14. 显示标记库的依赖关系
- 15. 依赖关系的nuget依赖关系
- 16. Nuget依赖关系 - 如何显示Linux上的NuGet的package.config依赖关系树
- 17. mvn validate throws依赖关系收敛错误,但mvn依赖关系:树不显示依赖关系
- 18. npm package.json操作系统特定的依赖关系
- 19. 错误显示gradle依赖关系树
- 20. Eclipse Maven未显示依赖关系
- 21. Maven依赖关系:树不显示所有传递依赖关系
- 22. NPM安装安装不在我的package.json中的依赖关系
- 23. NPM,package.json - 如何在名称中添加与“@”的依赖关系
- 24. 需要从package.json安装和卸载Webstorm中的依赖关系
- 25. 什么是package.json中的依赖关系 - nodejs
- 26. 在快速项目的package.json中添加依赖关系
- 27. 如何在gitrepository中定义package.json的依赖关系?
- 28. package.json依赖关系中的> =和〜有什么区别?
- 29. 更新package.json安装后的依赖关系没有--save
- 30. 依赖关系
甚至更好:'npm ls --json'可以让你轻松解析和重新格式化显示所需的输出。 – JohnnyHK
这是个不错的主意,@JohnnyHK :-) –
感谢Golo的回应。我正在尝试这个soln,并在'cosole.log(npm);' – Vinay