check-lib-requires.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * Copyright (c) 2013-present, Facebook, Inc.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. 'use strict';
  8. const assert = require('assert');
  9. const fs = require('fs');
  10. const path = require('path');
  11. const EXTRACT_MODULE_NAME_REGEX = /'\.\/(.+)'/;
  12. let didError = false;
  13. // Make sure we have a lib to read files from. Take it as the first argument.
  14. assert(
  15. process.argv.length >= 3,
  16. 'Expected to receive an argument to a lib directory'
  17. );
  18. const pathToLib = path.resolve(process.cwd(), process.argv[2]);
  19. fs.readdir(pathToLib, (err, files) => {
  20. files = files.filter((filename) => path.parse(filename).ext === '.js');
  21. files.forEach((filename) => {
  22. const requirePath = path.join(pathToLib, filename);
  23. const moduleName = path.parse(filename).name;
  24. try {
  25. require(requirePath);
  26. } catch (e) {
  27. if (e.code === 'MODULE_NOT_FOUND') {
  28. const missingModule = e.toString().match(EXTRACT_MODULE_NAME_REGEX)[1];
  29. console.error(moduleName, 'is missing a dependency:', missingModule);
  30. } else {
  31. console.error('UNKNOWN ERROR', e);
  32. }
  33. didError = true;
  34. }
  35. });
  36. process.exit(didError ? 1 : 0);
  37. });