example-run.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. const path = require("path");
  2. const exec = require("./lib/shell");
  3. const globby = require("globby");
  4. let rootDir = path.resolve(__dirname, "..");
  5. let examplesDir = path.join(rootDir, "example-projects");
  6. let givenProjName = process.argv[2];
  7. let runCmd = process.argv[3];
  8. if (!givenProjName) {
  9. console.error('Must specify an example-project name, or "all"');
  10. process.exit(1);
  11. }
  12. if (!runCmd) {
  13. console.error("Must specify a run command");
  14. process.exit(1);
  15. }
  16. let projNames =
  17. givenProjName === "all"
  18. ? globby.sync("*", { cwd: examplesDir, onlyDirectories: true })
  19. : [givenProjName];
  20. projNames.forEach((projName) => {
  21. // Rewrite projDir and projName to redirect parcel to parcel-2 directory
  22. if (projName === "parcel") {
  23. console.info("Redirecting to 'parcel-2' directory");
  24. projName = "parcel-2";
  25. } else if (projName === "next" || projName === "next-scheduler") {
  26. console.info("This example is disabled till the next major release");
  27. process.exit();
  28. }
  29. const projDir = path.join(examplesDir, projName);
  30. console.log("");
  31. console.log("PROJECT:", projName);
  32. console.log(projDir);
  33. let execCmd = [runCmd];
  34. if (projName === "angular") {
  35. console.log("Using PnP simulation");
  36. execCmd = ["example:pnp", projName, runCmd];
  37. } else {
  38. console.log("Normal Yarn execution");
  39. }
  40. console.log();
  41. exec.sync(["yarn", "run", ...execCmd], {
  42. cwd: projDir,
  43. exitOnError: true,
  44. live: true,
  45. });
  46. console.log();
  47. });