index.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import glob from "glob";
  2. import fs from "fs";
  3. // Utils: read files under specified directories
  4. export const getDirectories = (
  5. src: string,
  6. callback: (err: Error, res: string[]) => void
  7. ) => {
  8. glob(src + "/**/*", callback);
  9. };
  10. // sync: read files under specified directories
  11. export const getDirectoriesSync = (
  12. src: string,
  13. callback: (err: Error, res: string[]) => void
  14. ) => {
  15. try {
  16. const results = glob.sync(src + "/**/*");
  17. callback(undefined, results);
  18. } catch (error) {
  19. callback(error, []);
  20. }
  21. };
  22. export const generateCfgs = (
  23. cfgs: any[],
  24. dirRes: string[],
  25. isSrcPlugin: boolean = true
  26. ) => {
  27. dirRes.forEach((item: string) => {
  28. if (item.endsWith("/config.json")) {
  29. const fileData = fs.readFileSync(item);
  30. const jsonData = JSON.parse(fileData.toString());
  31. const apiPath = jsonData?.server?.api;
  32. const dirName = item.split("/config.json").shift().split("/").pop();
  33. const dir = item.split("/config.json").shift();
  34. const cfg = {
  35. path: item,
  36. dir,
  37. dirName,
  38. api: apiPath,
  39. data: jsonData,
  40. componentPath: isSrcPlugin
  41. ? `./plugins/${dirName}/app`
  42. : `../${dir}/app`,
  43. };
  44. cfgs.push(cfg);
  45. }
  46. });
  47. };