get-dependency.js 1.8 KB

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