@modern-js/monorepo-tools 2.15.0 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/cli/build.js +10 -31
  3. package/dist/cjs/cli/buildWatch.js +11 -31
  4. package/dist/cjs/cli/clear.js +11 -31
  5. package/dist/cjs/cli/deploy.js +14 -36
  6. package/dist/cjs/cli/index.js +23 -22
  7. package/dist/cjs/cli/install.js +11 -31
  8. package/dist/cjs/cli/new.js +17 -37
  9. package/dist/cjs/commands/build.js +21 -46
  10. package/dist/cjs/commands/buildWatch.js +19 -36
  11. package/dist/cjs/commands/clear.js +17 -34
  12. package/dist/cjs/commands/deploy.js +25 -41
  13. package/dist/cjs/commands/index.js +22 -21
  14. package/dist/cjs/commands/install.js +19 -36
  15. package/dist/cjs/constants.js +13 -26
  16. package/dist/cjs/dag/create.js +16 -28
  17. package/dist/cjs/dag/edgeManager.js +24 -28
  18. package/dist/cjs/dag/index.js +11 -29
  19. package/dist/cjs/dag/operator.js +106 -123
  20. package/dist/cjs/dag/task.js +52 -63
  21. package/dist/cjs/dag/utils.js +52 -49
  22. package/dist/cjs/features/build/index.js +52 -68
  23. package/dist/cjs/features/clear/index.js +66 -47
  24. package/dist/cjs/features/deploy/index.js +126 -96
  25. package/dist/cjs/features/dev/cmds.js +10 -25
  26. package/dist/cjs/features/dev/createTask.js +93 -56
  27. package/dist/cjs/features/dev/index.js +43 -71
  28. package/dist/cjs/features/dev/watchProjectsState.js +89 -64
  29. package/dist/cjs/features/install/index.js +74 -63
  30. package/dist/cjs/hooks/index.js +9 -27
  31. package/dist/cjs/index.js +36 -53
  32. package/dist/cjs/locale/en.js +7 -25
  33. package/dist/cjs/locale/index.js +18 -28
  34. package/dist/cjs/locale/zh.js +7 -25
  35. package/dist/cjs/log/error.js +7 -25
  36. package/dist/cjs/log/multiTasksLog.js +42 -43
  37. package/dist/cjs/log/time.js +19 -29
  38. package/dist/cjs/log/utils.js +7 -25
  39. package/dist/cjs/package/index.js +28 -30
  40. package/dist/cjs/parse-config/index.js +61 -49
  41. package/dist/cjs/parse-config/monorepo.js +81 -67
  42. package/dist/cjs/projects/checkProjectChange.js +95 -73
  43. package/dist/cjs/projects/clearMemoryFiles.js +52 -44
  44. package/dist/cjs/projects/getProjects.js +38 -65
  45. package/dist/cjs/projects/getProjectsByPackagesConfig.js +93 -71
  46. package/dist/cjs/projects/getProjectsByWorkspaceFile.js +89 -85
  47. package/dist/cjs/type.js +4 -15
  48. package/dist/cjs/utils/install.js +69 -44
  49. package/dist/cjs/utils/types.js +4 -15
  50. package/dist/esm/cli/build.js +2 -8
  51. package/dist/esm/cli/buildWatch.js +4 -9
  52. package/dist/esm/cli/clear.js +4 -9
  53. package/dist/esm/cli/deploy.js +7 -14
  54. package/dist/esm/cli/install.js +4 -9
  55. package/dist/esm/cli/new.js +9 -14
  56. package/dist/esm/commands/build.js +7 -17
  57. package/dist/esm/commands/buildWatch.js +6 -8
  58. package/dist/esm/commands/clear.js +6 -8
  59. package/dist/esm/commands/deploy.js +10 -11
  60. package/dist/esm/commands/install.js +6 -8
  61. package/dist/esm/constants.js +2 -6
  62. package/dist/esm/dag/create.js +10 -7
  63. package/dist/esm/dag/edgeManager.js +17 -6
  64. package/dist/esm/dag/index.js +1 -4
  65. package/dist/esm/dag/operator.js +77 -74
  66. package/dist/esm/dag/task.js +39 -30
  67. package/dist/esm/dag/utils.js +39 -27
  68. package/dist/esm/features/build/index.js +22 -27
  69. package/dist/esm/features/clear/index.js +4 -6
  70. package/dist/esm/features/deploy/index.js +55 -50
  71. package/dist/esm/features/dev/cmds.js +4 -4
  72. package/dist/esm/features/dev/createTask.js +31 -15
  73. package/dist/esm/features/dev/index.js +19 -27
  74. package/dist/esm/features/dev/watchProjectsState.js +41 -31
  75. package/dist/esm/features/install/index.js +11 -15
  76. package/dist/esm/hooks/index.js +1 -4
  77. package/dist/esm/index.js +12 -11
  78. package/dist/esm/locale/en.js +1 -4
  79. package/dist/esm/locale/index.js +5 -5
  80. package/dist/esm/locale/zh.js +1 -4
  81. package/dist/esm/log/error.js +1 -4
  82. package/dist/esm/log/multiTasksLog.js +32 -18
  83. package/dist/esm/log/time.js +7 -8
  84. package/dist/esm/log/utils.js +1 -4
  85. package/dist/esm/package/index.js +21 -8
  86. package/dist/esm/parse-config/index.js +11 -14
  87. package/dist/esm/parse-config/monorepo.js +20 -27
  88. package/dist/esm/projects/checkProjectChange.js +19 -23
  89. package/dist/esm/projects/clearMemoryFiles.js +3 -13
  90. package/dist/esm/projects/getProjects.js +21 -45
  91. package/dist/esm/projects/getProjectsByPackagesConfig.js +29 -33
  92. package/dist/esm/projects/getProjectsByWorkspaceFile.js +21 -41
  93. package/dist/esm/type.js +1 -0
  94. package/dist/esm/utils/install.js +12 -8
  95. package/dist/esm/utils/types.js +1 -0
  96. package/package.json +16 -12
@@ -1,8 +1,10 @@
1
1
  import * as path from "path";
2
2
  import { logger } from "@modern-js/utils";
3
3
  import { FileSystem } from "@rushstack/node-core-library";
4
- const defaultRemoveDirs = ["node_modules"];
5
- const runClearTask = (projectNames, projects, config) => {
4
+ export const defaultRemoveDirs = [
5
+ "node_modules"
6
+ ];
7
+ export const runClearTask = (projectNames, projects, config) => {
6
8
  const { removeDirs = defaultRemoveDirs, rootPath } = config;
7
9
  if (projectNames.length > 0) {
8
10
  projects.forEach((project) => {
@@ -29,7 +31,3 @@ const runClearTask = (projectNames, projects, config) => {
29
31
  });
30
32
  }
31
33
  };
32
- export {
33
- defaultRemoveDirs,
34
- runClearTask
35
- };
@@ -1,16 +1,6 @@
1
1
  import * as path from "path";
2
- import {
3
- FileSystem,
4
- JsonFile
5
- } from "@rushstack/node-core-library";
6
- import {
7
- fs,
8
- yaml,
9
- execa,
10
- logger,
11
- chalk,
12
- getPnpmVersion
13
- } from "@modern-js/utils";
2
+ import { FileSystem, JsonFile } from "@rushstack/node-core-library";
3
+ import { fs, yaml, execa, logger, chalk, getPnpmVersion } from "@modern-js/utils";
14
4
  import { WORKSPACE_FILE } from "../../constants";
15
5
  const createCopyMap = (rootPath, targetProject, copyProjects, deployDir) => {
16
6
  const map = /* @__PURE__ */ new Map();
@@ -34,12 +24,10 @@ const createCopyFromMonorepoToDeployDirFn = (monorepoDir, deployDir) => (filenam
34
24
  }
35
25
  };
36
26
  const checkAndUpdatePMWorkspaces = (deployDir) => {
37
- var _a;
27
+ var _pkg_workspaces;
38
28
  const pnpmWp = path.join(deployDir, WORKSPACE_FILE.PNPM);
39
29
  if (fs.existsSync(pnpmWp)) {
40
- const pnpmWorkspace = yaml.load(
41
- fs.readFileSync(pnpmWp, "utf-8")
42
- );
30
+ const pnpmWorkspace = yaml.load(fs.readFileSync(pnpmWp, "utf-8"));
43
31
  if (pnpmWorkspace.packages && Array.isArray(pnpmWorkspace.packages)) {
44
32
  pnpmWorkspace.packages.push("apps/**");
45
33
  }
@@ -47,7 +35,7 @@ const checkAndUpdatePMWorkspaces = (deployDir) => {
47
35
  }
48
36
  const pkgPath = path.join(deployDir, WORKSPACE_FILE.YARN);
49
37
  const pkg = JsonFile.load(pkgPath);
50
- if (((_a = pkg.workspaces) == null ? void 0 : _a.packages) && Array.isArray(pkg.workspaces.packages)) {
38
+ if (((_pkg_workspaces = pkg.workspaces) === null || _pkg_workspaces === void 0 ? void 0 : _pkg_workspaces.packages) && Array.isArray(pkg.workspaces.packages)) {
51
39
  pkg.workspaces.packages.push("app/**");
52
40
  }
53
41
  };
@@ -66,60 +54,82 @@ const generatorAndCopyRequiredFiles = (rootPath, deployDir) => {
66
54
  checkAndUpdatePMWorkspaces(deployDir);
67
55
  };
68
56
  const checkAndRunDeployCommand = async (monorepoPath, targetProject, packageManager) => {
69
- var _a, _b, _c;
70
- const scripts = ((_a = targetProject.extra) == null ? void 0 : _a.scripts) || {};
57
+ var _targetProject_extra;
58
+ const scripts = ((_targetProject_extra = targetProject.extra) === null || _targetProject_extra === void 0 ? void 0 : _targetProject_extra.scripts) || {};
71
59
  if (scripts.deploy) {
72
- logger.info(
73
- `The 'deploy' command for the ${targetProject.name} is detected, so 'deploy' will be executed`
74
- );
75
- let runDeployCommands = ["run", "deploy"];
60
+ var _childProcess_stdout, _childProcess_stderr;
61
+ logger.info(`The 'deploy' command for the ${targetProject.name} is detected, so 'deploy' will be executed`);
62
+ let runDeployCommands = [
63
+ "run",
64
+ "deploy"
65
+ ];
76
66
  if (packageManager === "pnpm") {
77
67
  const pnpmVersion = await getPnpmVersion();
78
68
  if (pnpmVersion.startsWith("6")) {
79
- runDeployCommands = ["run", "deploy", "--filter", targetProject.name];
69
+ runDeployCommands = [
70
+ "run",
71
+ "deploy",
72
+ "--filter",
73
+ targetProject.name
74
+ ];
80
75
  } else {
81
- runDeployCommands = ["run", "--filter", targetProject.name, "deploy"];
76
+ runDeployCommands = [
77
+ "run",
78
+ "--filter",
79
+ targetProject.name,
80
+ "deploy"
81
+ ];
82
82
  }
83
83
  } else if (packageManager === "yarn") {
84
- runDeployCommands = ["workspace", targetProject.name, "run", "deploy"];
84
+ runDeployCommands = [
85
+ "workspace",
86
+ targetProject.name,
87
+ "run",
88
+ "deploy"
89
+ ];
85
90
  }
86
91
  const cwd = packageManager === "npm" ? targetProject.extra.path : monorepoPath;
87
92
  const childProcess = execa(packageManager, runDeployCommands, {
88
93
  cwd,
89
- stdio: ["pipe"]
94
+ stdio: [
95
+ "pipe"
96
+ ]
90
97
  });
91
- (_b = childProcess.stdout) == null ? void 0 : _b.pipe(process.stdout);
92
- (_c = childProcess.stderr) == null ? void 0 : _c.pipe(process.stderr);
98
+ (_childProcess_stdout = childProcess.stdout) === null || _childProcess_stdout === void 0 ? void 0 : _childProcess_stdout.pipe(process.stdout);
99
+ (_childProcess_stderr = childProcess.stderr) === null || _childProcess_stderr === void 0 ? void 0 : _childProcess_stderr.pipe(process.stderr);
93
100
  await childProcess;
94
101
  }
95
102
  };
96
103
  const installDependency = async (deployDir, packageManager) => {
97
104
  const packageJsonPath = path.join(deployDir, "package.json");
98
105
  const packageJson = JsonFile.load(packageJsonPath);
99
- const scripts = (packageJson == null ? void 0 : packageJson.scripts) || {};
106
+ const scripts = (packageJson === null || packageJson === void 0 ? void 0 : packageJson.scripts) || {};
100
107
  let commands = [];
101
108
  if (scripts.setup) {
102
- logger.info(
103
- `The 'setup' command is detected, execute '${packageManager} run setup' to start installing the dependencies`
104
- );
105
- commands = ["run", "setup"];
109
+ logger.info(`The 'setup' command is detected, execute '${packageManager} run setup' to start installing the dependencies`);
110
+ commands = [
111
+ "run",
112
+ "setup"
113
+ ];
106
114
  } else {
107
- logger.info(
108
- `No 'setup' command detected, execute '${packageManager} install' to start installing dependencies`
109
- );
110
- commands = ["install"];
115
+ logger.info(`No 'setup' command detected, execute '${packageManager} install' to start installing dependencies`);
116
+ commands = [
117
+ "install"
118
+ ];
111
119
  }
112
120
  logger.log(chalk.rgb(218, 152, 92)("Install Log:\n"));
113
121
  const childProcess = execa(packageManager, commands, {
114
122
  stdio: "inherit",
115
123
  cwd: deployDir,
116
- env: { NODE_ENV: void 0 }
124
+ env: {
125
+ NODE_ENV: void 0
126
+ }
117
127
  });
118
128
  await childProcess;
119
129
  };
120
130
  const excludeDirs = (filePath, dirs) => dirs.some((dir) => filePath.includes(dir));
121
131
  const defaultDeployPath = "output";
122
- const deploy = async (deployProjectNames, operator, config) => {
132
+ export const deploy = async (deployProjectNames, operator, config) => {
123
133
  const { rootPath, packageManager, deployPath = defaultDeployPath } = config;
124
134
  const realDeployPath = path.isAbsolute(deployPath) ? deployPath : path.join(rootPath, deployPath);
125
135
  FileSystem.deleteFolder(realDeployPath);
@@ -128,12 +138,7 @@ const deploy = async (deployProjectNames, operator, config) => {
128
138
  checkExist: true
129
139
  });
130
140
  const alldeps = operator.getNodeAllDependencyData(deployProjectName);
131
- const copyMap = createCopyMap(
132
- rootPath,
133
- currentProject,
134
- alldeps,
135
- realDeployPath
136
- );
141
+ const copyMap = createCopyMap(rootPath, currentProject, alldeps, realDeployPath);
137
142
  await checkAndRunDeployCommand(rootPath, currentProject, packageManager);
138
143
  FileSystem.ensureFolder(realDeployPath);
139
144
  for (const [from, to] of copyMap) {
@@ -143,7 +148,10 @@ const deploy = async (deployProjectNames, operator, config) => {
143
148
  // If true, then when copying symlinks, copy the target object instead of copying the link.
144
149
  dereferenceSymlinks: false,
145
150
  filter(filePath) {
146
- if (excludeDirs(filePath, ["node_modules", "dist"])) {
151
+ if (excludeDirs(filePath, [
152
+ "node_modules",
153
+ "dist"
154
+ ])) {
147
155
  return false;
148
156
  }
149
157
  return true;
@@ -154,6 +162,3 @@ const deploy = async (deployProjectNames, operator, config) => {
154
162
  generatorAndCopyRequiredFiles(rootPath, realDeployPath);
155
163
  logger.success(`Deploy success. The deploy dir is in '${rootPath}/output'`);
156
164
  };
157
- export {
158
- deploy
159
- };
@@ -1,4 +1,4 @@
1
- const defaultBuildWatchCmds = ["dev", "build"];
2
- export {
3
- defaultBuildWatchCmds
4
- };
1
+ export const defaultBuildWatchCmds = [
2
+ "dev",
3
+ "build"
4
+ ];
@@ -5,17 +5,23 @@ import { defaultBuildWatchCmds } from "./cmds";
5
5
  const getFinalTaskCmds = (taskCmds, project) => {
6
6
  let finalTaskCmds = [];
7
7
  if (taskCmds.length === 1) {
8
- finalTaskCmds = [taskCmds[0]];
8
+ finalTaskCmds = [
9
+ taskCmds[0]
10
+ ];
9
11
  } else if (taskCmds.length === 2 && typeof taskCmds[0] === "string" && typeof taskCmds[1] === "string") {
10
- finalTaskCmds = [taskCmds[1]];
12
+ finalTaskCmds = [
13
+ taskCmds[1]
14
+ ];
11
15
  } else if (taskCmds.length === 2 && typeof taskCmds[0] === "string" && typeof taskCmds[1] === "function") {
12
16
  finalTaskCmds = taskCmds[1](project);
13
17
  } else {
14
- finalTaskCmds = ["build"];
18
+ finalTaskCmds = [
19
+ "build"
20
+ ];
15
21
  }
16
22
  return finalTaskCmds;
17
23
  };
18
- const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
24
+ export const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
19
25
  const { packageManager } = config;
20
26
  const timelogInstance = timeLog.initTimeLog();
21
27
  const task = async (project) => {
@@ -26,14 +32,22 @@ const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLo
26
32
  const prefix = `run ${project.name} ${taskCmd} script`;
27
33
  timeLog.startTime(timelogInstance, prefix);
28
34
  try {
29
- const childProcess = execa(packageManager, [taskCmd], {
35
+ const childProcess = execa(packageManager, [
36
+ taskCmd
37
+ ], {
30
38
  cwd: project.extra.path,
31
- stdio: ["pipe", "pipe", "pipe"]
39
+ stdio: [
40
+ "pipe",
41
+ "pipe",
42
+ "pipe"
43
+ ]
32
44
  });
33
45
  taskLogger.addLogProvider(project.name, {
34
46
  stdout: childProcess.stdout,
35
47
  stderr: childProcess.stderr,
36
- logConfig: { label: "WATCH: " }
48
+ logConfig: {
49
+ label: "WATCH: "
50
+ }
37
51
  });
38
52
  await childProcess;
39
53
  } catch (e) {
@@ -47,15 +61,19 @@ const createDependenciesTask = (config, taskCmds = defaultBuildWatchCmds, taskLo
47
61
  };
48
62
  return task;
49
63
  };
50
- const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
64
+ export const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) => {
51
65
  const { packageManager } = config;
52
66
  const task = async (project) => {
53
- const devCmds = [taskCmds[0]];
67
+ const devCmds = [
68
+ taskCmds[0]
69
+ ];
54
70
  const cmd = project.extra.scripts || {};
55
71
  for (const taskCmd of devCmds) {
56
72
  if (cmd[taskCmd]) {
57
73
  try {
58
- const childProcess = execa(packageManager, [taskCmd], {
74
+ const childProcess = execa(packageManager, [
75
+ taskCmd
76
+ ], {
59
77
  cwd: project.extra.path,
60
78
  stdio: "pipe",
61
79
  all: true
@@ -63,7 +81,9 @@ const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) =>
63
81
  taskLogger.addLogProvider(project.name, {
64
82
  stdout: childProcess.stdout,
65
83
  stderr: childProcess.stderr,
66
- logConfig: { label: `${taskCmd.toUpperCase()}: ` }
84
+ logConfig: {
85
+ label: `${taskCmd.toUpperCase()}: `
86
+ }
67
87
  });
68
88
  const ret = await childProcess;
69
89
  console.info(ret);
@@ -77,7 +97,3 @@ const createDevTask = (config, taskCmds = defaultBuildWatchCmds, taskLogger) =>
77
97
  };
78
98
  return task;
79
99
  };
80
- export {
81
- createDependenciesTask,
82
- createDevTask
83
- };
@@ -14,7 +14,7 @@ const getIgnored = (config) => (watchFilePath) => {
14
14
  }
15
15
  return false;
16
16
  };
17
- const runBuildWatchTask = async (projectName, operator, config, taskCmds = defaultBuildWatchCmds) => {
17
+ export const runBuildWatchTask = async (projectName, operator, config, taskCmds = defaultBuildWatchCmds) => {
18
18
  const { needInit = true } = config;
19
19
  const taskLogger = new MultitasksLogger();
20
20
  const dependenciesTask = createDependenciesTask(config, taskCmds, taskLogger);
@@ -32,12 +32,9 @@ const runBuildWatchTask = async (projectName, operator, config, taskCmds = defau
32
32
  });
33
33
  watcher.add(watchedProjectState.getWatchedProjectsPath());
34
34
  if (needInit) {
35
- await operator.traverseDependenciesToProject(
36
- projectName,
37
- async (currentProject) => {
38
- await dependenciesTask(currentProject);
39
- }
40
- );
35
+ await operator.traverseDependenciesToProject(projectName, async (currentProject) => {
36
+ await dependenciesTask(currentProject);
37
+ });
41
38
  }
42
39
  await new Promise((resolve) => {
43
40
  console.info("start watch");
@@ -47,22 +44,18 @@ const runBuildWatchTask = async (projectName, operator, config, taskCmds = defau
47
44
  }
48
45
  const changedProject = watchedProjectState.getChangedProject(changeFilePath);
49
46
  if (changedProject) {
50
- await operator.traverseProjectToDependent(
51
- changedProject.name,
52
- async (currentProject, _, earlyFinish) => {
53
- if (currentProject.name === projectName) {
54
- earlyFinish();
55
- return;
56
- }
57
- if (watchedProjectState.watchProjectsName.includes(
58
- currentProject.name
59
- )) {
60
- console.info("run build", currentProject.name);
61
- await dependenciesTask(currentProject);
62
- }
63
- },
64
- { withSelf: true }
65
- );
47
+ await operator.traverseProjectToDependent(changedProject.name, async (currentProject, _, earlyFinish) => {
48
+ if (currentProject.name === projectName) {
49
+ earlyFinish();
50
+ return;
51
+ }
52
+ if (watchedProjectState.watchProjectsName.includes(currentProject.name)) {
53
+ console.info("run build", currentProject.name);
54
+ await dependenciesTask(currentProject);
55
+ }
56
+ }, {
57
+ withSelf: true
58
+ });
66
59
  resolve(null);
67
60
  } else {
68
61
  console.info("changed is not in monorepo manager");
@@ -70,8 +63,7 @@ const runBuildWatchTask = async (projectName, operator, config, taskCmds = defau
70
63
  });
71
64
  resolve(null);
72
65
  });
73
- await devTask(operator.getNodeData(projectName, { checkExist: true }));
74
- };
75
- export {
76
- runBuildWatchTask
66
+ await devTask(operator.getNodeData(projectName, {
67
+ checkExist: true
68
+ }));
77
69
  };
@@ -1,37 +1,41 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
1
14
  import * as path from "path";
2
15
  import { globby } from "@modern-js/utils";
3
- class WatchedProjectsState {
4
- constructor(fromNodes, config) {
5
- this._fromNodes = fromNodes;
6
- this._config = config;
7
- this._projectsFileMap = /* @__PURE__ */ new Map();
8
- this._watchProjects = {};
9
- this._initState();
10
- }
16
+ export class WatchedProjectsState {
11
17
  _initState() {
12
18
  const globOption = {
13
19
  cwd: this._config.rootPath,
14
20
  absolute: true,
15
21
  expandDirectories: false,
16
22
  followSymbolicLinks: false,
17
- ignore: ["**/node_modules/**", ".project-memory/**", "dist/**"]
23
+ ignore: [
24
+ "**/node_modules/**",
25
+ ".project-memory/**",
26
+ "dist/**"
27
+ ]
18
28
  };
19
- this._watchProjects = this._fromNodes.reduce(
20
- (ret, node) => {
21
- const files = globby.sync(`${node.extra.path}/**`, globOption);
22
- for (const filePath of files) {
23
- this._projectsFileMap.set(
24
- path.relative(this._config.rootPath, filePath),
25
- node.extra.path
26
- );
27
- }
28
- return {
29
- ...ret,
30
- [node.extra.path]: node
31
- };
32
- },
33
- {}
34
- );
29
+ this._watchProjects = this._fromNodes.reduce((ret, node) => {
30
+ const files = globby.sync(`${node.extra.path}/**`, globOption);
31
+ for (const filePath of files) {
32
+ this._projectsFileMap.set(path.relative(this._config.rootPath, filePath), node.extra.path);
33
+ }
34
+ return {
35
+ ...ret,
36
+ [node.extra.path]: node
37
+ };
38
+ }, {});
35
39
  }
36
40
  getChangedProject(changedFilPath) {
37
41
  if (this._projectsFileMap.has(changedFilPath)) {
@@ -50,11 +54,17 @@ class WatchedProjectsState {
50
54
  return this._watchProjects;
51
55
  }
52
56
  get watchProjectsName() {
53
- return Object.keys(this._watchProjects).map(
54
- (projectPath) => this._watchProjects[projectPath].name
55
- );
57
+ return Object.keys(this._watchProjects).map((projectPath) => this._watchProjects[projectPath].name);
58
+ }
59
+ constructor(fromNodes, config) {
60
+ _define_property(this, "_config", void 0);
61
+ _define_property(this, "_fromNodes", void 0);
62
+ _define_property(this, "_watchProjects", void 0);
63
+ _define_property(this, "_projectsFileMap", void 0);
64
+ this._fromNodes = fromNodes;
65
+ this._config = config;
66
+ this._projectsFileMap = /* @__PURE__ */ new Map();
67
+ this._watchProjects = {};
68
+ this._initState();
56
69
  }
57
70
  }
58
- export {
59
- WatchedProjectsState
60
- };
@@ -3,27 +3,23 @@ import { fs, yaml } from "@modern-js/utils";
3
3
  import { JsonFile } from "@rushstack/node-core-library";
4
4
  import { WORKSPACE_FILE } from "../../constants";
5
5
  import { installByPackageManager } from "../../utils/install";
6
- const replaceWorkspaces = ({
7
- rootPath,
8
- projectsInWorkspaces
9
- }) => {
10
- var _a;
6
+ const replaceWorkspaces = ({ rootPath, projectsInWorkspaces }) => {
11
7
  const pnpmWsFilePath = path.join(rootPath, WORKSPACE_FILE.PNPM);
12
8
  if (fs.existsSync(pnpmWsFilePath)) {
13
9
  const pnpmWorkspace = fs.readFileSync(pnpmWsFilePath, "utf-8");
14
10
  const originalPnpmWorkspaces = yaml.load(pnpmWorkspace);
15
- fs.writeFileSync(
16
- pnpmWsFilePath,
17
- yaml.dump({ packages: projectsInWorkspaces })
18
- );
11
+ fs.writeFileSync(pnpmWsFilePath, yaml.dump({
12
+ packages: projectsInWorkspaces
13
+ }));
19
14
  return () => {
20
15
  yaml.dump(originalPnpmWorkspaces);
21
16
  };
22
17
  }
23
18
  const pkgFilePath = path.join(rootPath, WORKSPACE_FILE.YARN);
24
19
  if (fs.existsSync(pkgFilePath)) {
20
+ var _pkg_workspaces;
25
21
  const pkg = JsonFile.load(pkgFilePath);
26
- if ((_a = pkg == null ? void 0 : pkg.workspaces) == null ? void 0 : _a.packages) {
22
+ if (pkg === null || pkg === void 0 ? void 0 : (_pkg_workspaces = pkg.workspaces) === null || _pkg_workspaces === void 0 ? void 0 : _pkg_workspaces.packages) {
27
23
  const originalPkg = pkg;
28
24
  pkg.workspaces.packages = projectsInWorkspaces;
29
25
  JsonFile.save(pkg, pkgFilePath);
@@ -34,7 +30,7 @@ const replaceWorkspaces = ({
34
30
  }
35
31
  return false;
36
32
  };
37
- const runInstallTask = async (projectNames, operator, config) => {
33
+ export const runInstallTask = async (projectNames, operator, config) => {
38
34
  const { rootPath, packageManager } = config;
39
35
  let projectsInWorkspaces = [];
40
36
  if (projectNames.length === 0) {
@@ -54,11 +50,11 @@ const runInstallTask = async (projectNames, operator, config) => {
54
50
  rootPath,
55
51
  projectsInWorkspaces: noDupProjectList
56
52
  });
57
- await installByPackageManager(packageManager, { rootPath, removeLock: true });
53
+ await installByPackageManager(packageManager, {
54
+ rootPath,
55
+ removeLock: true
56
+ });
58
57
  if (restorWorkspace) {
59
58
  restorWorkspace();
60
59
  }
61
60
  };
62
- export {
63
- runInstallTask
64
- };
@@ -1,8 +1,5 @@
1
1
  import { createAsyncWorkflow } from "@modern-js/plugin";
2
2
  const afterMonorepoDeploy = createAsyncWorkflow();
3
- const hooks = {
3
+ export const hooks = {
4
4
  afterMonorepoDeploy
5
5
  };
6
- export {
7
- hooks
8
- };
package/dist/esm/index.js CHANGED
@@ -5,17 +5,19 @@ import { getLocaleLanguage } from "@modern-js/plugin-i18n/language-detector";
5
5
  import { i18n } from "./locale";
6
6
  import { newCli, deployCli, clearCli } from "./cli";
7
7
  import { hooks } from "./hooks";
8
- const upgradeModel = Import.lazy(
9
- "@modern-js/upgrade",
10
- require
11
- );
12
- var src_default = () => ({
8
+ const upgradeModel = Import.lazy("@modern-js/upgrade", require);
9
+ export default () => ({
13
10
  name: "@modern-js/monorepo-tools",
14
- usePlugins: [changesetPlugin(), lintPlugin()],
11
+ usePlugins: [
12
+ changesetPlugin(),
13
+ lintPlugin()
14
+ ],
15
15
  registerHook: hooks,
16
16
  setup: (api) => {
17
17
  const locale = getLocaleLanguage();
18
- i18n.changeLanguage({ locale });
18
+ i18n.changeLanguage({
19
+ locale
20
+ });
19
21
  return {
20
22
  commands({ program }) {
21
23
  clearCli(program, api);
@@ -25,8 +27,7 @@ var src_default = () => ({
25
27
  }
26
28
  };
27
29
  },
28
- post: ["@modern-js/plugin-changeset"]
30
+ post: [
31
+ "@modern-js/plugin-changeset"
32
+ ]
29
33
  });
30
- export {
31
- src_default as default
32
- };
@@ -1,4 +1,4 @@
1
- const EN_LOCALE = {
1
+ export const EN_LOCALE = {
2
2
  command: {
3
3
  new: {
4
4
  describe: "generator runner for monorepo project",
@@ -11,6 +11,3 @@ const EN_LOCALE = {
11
11
  }
12
12
  }
13
13
  };
14
- export {
15
- EN_LOCALE
16
- };
@@ -2,8 +2,8 @@ import { I18n } from "@modern-js/plugin-i18n";
2
2
  import { ZH_LOCALE } from "./zh";
3
3
  import { EN_LOCALE } from "./en";
4
4
  const i18n = new I18n();
5
- const localeKeys = i18n.init("en", { zh: ZH_LOCALE, en: EN_LOCALE });
6
- export {
7
- i18n,
8
- localeKeys
9
- };
5
+ const localeKeys = i18n.init("en", {
6
+ zh: ZH_LOCALE,
7
+ en: EN_LOCALE
8
+ });
9
+ export { i18n, localeKeys };
@@ -1,4 +1,4 @@
1
- const ZH_LOCALE = {
1
+ export const ZH_LOCALE = {
2
2
  command: {
3
3
  new: {
4
4
  describe: "Monorepo 创建子项目",
@@ -11,6 +11,3 @@ const ZH_LOCALE = {
11
11
  }
12
12
  }
13
13
  };
14
- export {
15
- ZH_LOCALE
16
- };
@@ -1,6 +1,3 @@
1
- const errorLog = (...rest) => {
1
+ export const errorLog = (...rest) => {
2
2
  throw new Error(rest.join("\n"));
3
3
  };
4
- export {
5
- errorLog
6
- };