clean-packages.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env node
  2. var fs = require('fs');
  3. var path = require('path');
  4. var glob = require('glob');
  5. var childProcess = require('child_process');
  6. // Get all of the packages.
  7. var basePath = path.resolve('.');
  8. var lernaConfig = require(path.join(basePath, 'lerna.json'));
  9. var packageConfig = lernaConfig.packages;
  10. var skipSource = process.argv.indexOf('packages') === -1;
  11. var skipExamples = process.argv.indexOf('examples') === -1;
  12. // Handle the packages
  13. for (var i = 0; i < packageConfig.length; i++) {
  14. if (skipSource && packageConfig[i] === 'packages/*') {
  15. continue;
  16. }
  17. if (skipExamples && packageConfig[i] === 'examples/*') {
  18. continue;
  19. }
  20. var files = glob.sync(path.join(basePath, packageConfig[i]));
  21. for (var j = 0; j < files.length; j++) {
  22. try {
  23. handlePackage(files[j]);
  24. } catch (e) {
  25. console.error(e);
  26. }
  27. }
  28. }
  29. /**
  30. * Handle an individual package on the path - update the dependency.
  31. */
  32. function handlePackage(packagePath) {
  33. // Read in the package.json.
  34. var packagePath = path.join(packagePath, 'package.json');
  35. var package = require(packagePath);
  36. if (!package.scripts || !package.scripts.clean) {
  37. return;
  38. }
  39. var targets = package.scripts.clean.split('&&');
  40. for (var i = 0; i < targets.length; i++) {
  41. var target = targets[i].replace('rimraf', '').trim();
  42. target = path.join(packagePath, target);
  43. if (fs.existsSync(target)) {
  44. fs.removeSync(target);
  45. }
  46. }
  47. }