Guest User

Untitled

a guest
Feb 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. /* global require, exports */
  2.  
  3. var walkdir = require('walkdir'),
  4. fs = require('fs'),
  5. readInstalled = require('read-installed'),
  6. emitter = require('events').EventEmitter;
  7.  
  8.  
  9. function listdep(parent, dep, level, deps) {
  10. var stack = [];
  11. stack.push({parent: parent, dep: dep, level: level});
  12. while (typeof (o = stack.pop()) !== 'undefined') {
  13. for (var i in o.dep.dependencies) {
  14. cyclic = false;
  15. dep_parent = o.parent;
  16. while (typeof dep_parent !== 'undefined') {
  17. if (dep_parent.component === i) {
  18. cyclic = true;
  19. break;
  20. } else {
  21. dep_parent = dep_parent.parent;
  22. }
  23. }
  24. if (cyclic) {
  25. continue;
  26. }
  27. var d = { component: i, version: o.dep.dependencies[i].version, parent: o.parent, level: o.level };
  28. deps.push(d);
  29. stack.push({parent: d, dep: o.dep.dependencies[i], level: o.level + 1});
  30. }
  31. }
  32. }
  33.  
  34. function getNodeDependencies(path, limit) {
  35. var events = new emitter();
  36. readInstalled(path, {}, function (er, pkginfo) {
  37. var deps = [];
  38. if (limit) {
  39. var packages = JSON.parse(fs.readFileSync(path +'/package.json'));
  40. filter = [];
  41.  
  42. var filter = packages.dependencies ? Object.keys(packages.dependencies) : [];
  43. Object.keys(pkginfo.dependencies)
  44. .filter(function(d) { return filter.indexOf(d) == -1; })
  45. .forEach(function(d) { delete pkginfo.dependencies[d]; });
  46. }
  47. listdep({component: pkginfo.name, version: pkginfo.version}, pkginfo, 1, deps);
  48. events.emit('done', deps);
  49. });
  50. return events;
  51. }
  52.  
  53. function scanJsFiles(path) {
  54. var finder = walkdir.find(path);
  55. finder.on('file', function (file) {
  56. if (file.match(/\.js$/)) {
  57. finder.emit('jsfile', file);
  58. }
  59. if (file.match(/\/bower.json$/)) {
  60. finder.emit('bowerfile', file);
  61. }
  62. });
  63. return finder;
  64. }
  65.  
  66. exports.scanJsFiles = function(path) {
  67. return scanJsFiles(path);
  68. };
  69.  
  70. exports.getNodeDependencies = function(path, limit) {
  71. return getNodeDependencies(path, limit);
  72. };
Add Comment
Please, Sign In to add comment