get-dependency.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Get the appropriate dependency for a package.
  2. var childProcess = require('child_process');
  3. var path = require('path');
  4. var glob = require('glob');
  5. var allDeps = [];
  6. var allDevDeps = [];
  7. /**
  8. * Get the appropriate dependency for a given package name.
  9. */
  10. function getDependency(name) {
  11. // Look in all of the packages.
  12. var basePath = path.resolve('.');
  13. var files = glob.sync(path.join(basePath, 'packages/*'));
  14. var version = null;
  15. for (var j = 0; j < files.length; j++) {
  16. // Read in the package.json.
  17. var packagePath = path.join(files[j], 'package.json');
  18. try {
  19. var package = require(packagePath);
  20. } catch (e) {
  21. console.log('Skipping package ' + packagePath);
  22. continue;
  23. }
  24. if (package.name === name) {
  25. version = package.version;
  26. }
  27. var deps = package.dependencies || {};
  28. var devDeps = package.devDependencies || {};
  29. if (deps[name]) {
  30. allDeps.push(package.name);
  31. version = deps[name];
  32. }
  33. if (devDeps[name]) {
  34. allDevDeps.push(package.name);
  35. version = devDeps[name];
  36. }
  37. }
  38. if (!version) {
  39. var cmd = 'npm view ' + name + ' version';
  40. version = '~' + String(childProcess.execSync(cmd)).trim();
  41. }
  42. return version;
  43. }
  44. exports = getDependency;
  45. if (require.main === module) {
  46. // Make sure we have required command line arguments.
  47. if (process.argv.length < 3) {
  48. var msg = '** Must supply a target library name\n';
  49. process.stderr.write(msg);
  50. process.exit(1);
  51. }
  52. var version = getDependency(process.argv[2]);
  53. console.log('deps: ', allDeps);
  54. console.log('devDeps:', allDevDeps);
  55. console.log('\n ' + '"' + name + '": "' + version + '"');
  56. }