Advertisement
Guest User

Untitled

a guest
May 26th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. ### ./find module-name
  2.  
  3. Placed on the root of all git repositories, and made executable via `chmod +x find`, this utils displays folders with a `package.json` that depends on it.
  4.  
  5. ```js
  6. #!/usr/bin/env node
  7.  
  8. // ./find module-name
  9. // simple utility to find folders depending on module-name
  10. // by Andrea Giammarchi - @webreflection
  11.  
  12. let [_, find, search] = process.argv;
  13. const fs = require('fs');
  14. const path = require('path');
  15.  
  16. const cwd = process.cwd();
  17. const dir = path.dirname(path.resolve(find));
  18.  
  19. if (cwd !== dir) {
  20. if (!search) {
  21. search = path.basename(cwd);
  22. }
  23. process.chdir(dir);
  24. }
  25.  
  26. if (!search)
  27. console.log(' ./find module-name');
  28. else
  29. fs.readdir('.', (err, dirs) => {
  30. console.log('');
  31. const promises = [];
  32. const noPackage = [];
  33. dirs.forEach(dir => {
  34. promises.push(new Promise($ => {
  35. fs.stat(dir, (err, stats) => {
  36. if (!err && stats.isDirectory()) {
  37. try {
  38. const package = require(`./${dir}/package.json`);
  39. const deps = [];
  40. if (search in (package.dependencies || {}))
  41. deps.push('dependency');
  42. if (search in (package.devDependencies || {}))
  43. deps.push('devDependency');
  44. if (deps.length)
  45. console.info(` \x1B[1m${dir}\x1B[0m as ${deps.join(', ')}`);
  46. } catch(o_O) {
  47. noPackage.push(dir);
  48. }
  49. }
  50. $();
  51. });
  52. }));
  53. });
  54. Promise.all(promises).then(() => {
  55. console.log('');
  56. console.info(` \x1B[2mSearched for \x1B[0m${search}\x1B[2m in \x1B[0m${dir}`);
  57. if (noPackage.length) {
  58. console.warn(` \x1B[2mNo package.json in ${noPackage.join(', ')}\x1B[0m`);
  59. }
  60. console.log('');
  61. });
  62. });
  63. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement