@modern-js/monorepo-tools 2.4.0 → 2.5.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.
- package/CHANGELOG.md +24 -0
- package/cli.js +1 -1
- package/dist/{js/node → cjs}/cli/build-watch.js +3 -23
- package/dist/{js/node → cjs}/cli/build.js +3 -23
- package/dist/{js/node → cjs}/cli/clear.js +3 -23
- package/dist/{js/node → cjs}/cli/deploy.js +3 -23
- package/dist/{js/node → cjs}/cli/index.js +0 -0
- package/dist/cjs/cli/install.js +34 -0
- package/dist/{js/node → cjs}/cli/new.js +3 -40
- package/dist/{js/node → cjs}/commands/build-watch.js +4 -24
- package/dist/{js/node → cjs}/commands/build.js +8 -41
- package/dist/{js/node → cjs}/commands/clear.js +3 -23
- package/dist/{js/node → cjs}/commands/deploy.js +4 -24
- package/dist/{js/node → cjs}/commands/index.js +0 -0
- package/dist/{js/node → cjs}/commands/install.js +4 -24
- package/dist/{js/node → cjs}/constants.js +0 -0
- package/dist/{js/node → cjs}/dag/create.js +5 -15
- package/dist/{js/node → cjs}/dag/edge-manager.js +0 -0
- package/dist/{js/node → cjs}/dag/index.js +0 -0
- package/dist/cjs/dag/operator.js +232 -0
- package/dist/{js/node → cjs}/dag/task.js +29 -53
- package/dist/{js/node → cjs}/dag/utils.js +0 -0
- package/dist/{js/node → cjs}/features/build/index.js +13 -33
- package/dist/{js/node → cjs}/features/clear/index.js +0 -0
- package/dist/{js/node → cjs}/features/deploy/index.js +10 -30
- package/dist/{js/node → cjs}/features/dev/cmds.js +0 -0
- package/dist/{js/node → cjs}/features/dev/create-task.js +6 -26
- package/dist/{js/node → cjs}/features/dev/index.js +14 -34
- package/dist/{js/node → cjs}/features/dev/watch-projects-state.js +3 -19
- package/dist/{js/node → cjs}/features/install/index.js +3 -23
- package/dist/{js/node → cjs}/hooks/index.js +0 -0
- package/dist/{js/node → cjs}/index.js +0 -0
- package/dist/{js/node → cjs}/locale/en.js +0 -0
- package/dist/{js/node → cjs}/locale/index.js +0 -0
- package/dist/{js/node → cjs}/locale/zh.js +0 -0
- package/dist/{js/node → cjs}/log/error.js +0 -0
- package/dist/{js/node → cjs}/log/multi-tasks-log.js +0 -0
- package/dist/{js/node → cjs}/log/time.js +1 -15
- package/dist/{js/node → cjs}/log/utils.js +0 -0
- package/dist/{js/node → cjs}/package/index.js +0 -0
- package/dist/{js/node → cjs}/parse-config/index.js +4 -38
- package/dist/{js/node → cjs}/parse-config/monorepo.js +0 -0
- package/dist/{js/node → cjs}/projects/check-project-change.js +12 -32
- package/dist/{js/node → cjs}/projects/clear-memory-files.js +0 -0
- package/dist/{js/node → cjs}/projects/get-projects-by-packages-config.js +11 -45
- package/dist/{js/node → cjs}/projects/get-projects-by-workspace-file.js +4 -24
- package/dist/{js/node → cjs}/projects/get-projects.js +15 -47
- package/dist/{js/node → cjs}/type.js +0 -0
- package/dist/{js/node → cjs}/utils/install.js +4 -24
- package/dist/{js/node → cjs}/utils/language.js +0 -0
- package/dist/{js/node → cjs}/utils/types.js +0 -0
- package/dist/esm/cli/build-watch.js +11 -0
- package/dist/esm/cli/build.js +12 -0
- package/dist/esm/cli/clear.js +11 -0
- package/dist/esm/cli/deploy.js +16 -0
- package/dist/{js/modern → esm}/cli/index.js +0 -0
- package/dist/esm/cli/install.js +11 -0
- package/dist/esm/cli/new.js +18 -0
- package/dist/esm/commands/build-watch.js +24 -0
- package/dist/esm/commands/build.js +55 -0
- package/dist/esm/commands/clear.js +19 -0
- package/dist/{js/modern → esm}/commands/deploy.js +4 -24
- package/dist/{js/modern → esm}/commands/index.js +0 -0
- package/dist/esm/commands/install.js +23 -0
- package/dist/{js/modern → esm}/constants.js +0 -0
- package/dist/{js/modern → esm}/dag/create.js +5 -17
- package/dist/{js/modern → esm}/dag/edge-manager.js +0 -0
- package/dist/{js/modern → esm}/dag/index.js +0 -0
- package/dist/esm/dag/operator.js +203 -0
- package/dist/esm/dag/task.js +55 -0
- package/dist/{js/modern → esm}/dag/utils.js +0 -0
- package/dist/{js/modern → esm}/features/build/index.js +13 -33
- package/dist/{js/modern → esm}/features/clear/index.js +0 -0
- package/dist/{js/modern → esm}/features/deploy/index.js +10 -30
- package/dist/{js/modern → esm}/features/dev/cmds.js +0 -0
- package/dist/{js/modern → esm}/features/dev/create-task.js +6 -26
- package/dist/{js/modern → esm}/features/dev/index.js +14 -34
- package/dist/{js/modern → esm}/features/dev/watch-projects-state.js +3 -21
- package/dist/{js/modern → esm}/features/install/index.js +3 -23
- package/dist/{js/modern → esm}/hooks/index.js +0 -0
- package/dist/{js/modern → esm}/index.js +0 -0
- package/dist/{js/modern → esm}/locale/en.js +0 -0
- package/dist/{js/modern → esm}/locale/index.js +0 -0
- package/dist/{js/modern → esm}/locale/zh.js +0 -0
- package/dist/{js/modern → esm}/log/error.js +0 -0
- package/dist/{js/modern → esm}/log/multi-tasks-log.js +0 -0
- package/dist/esm/log/time.js +13 -0
- package/dist/{js/modern → esm}/log/utils.js +0 -0
- package/dist/{js/modern → esm}/package/index.js +0 -0
- package/dist/esm/parse-config/index.js +15 -0
- package/dist/{js/modern → esm}/parse-config/monorepo.js +0 -0
- package/dist/{js/modern → esm}/projects/check-project-change.js +12 -32
- package/dist/{js/modern → esm}/projects/clear-memory-files.js +0 -0
- package/dist/{js/modern → esm}/projects/get-projects-by-packages-config.js +11 -47
- package/dist/{js/modern → esm}/projects/get-projects-by-workspace-file.js +4 -24
- package/dist/{js/modern → esm}/projects/get-projects.js +15 -49
- package/dist/{js/modern → esm}/type.js +0 -0
- package/dist/esm/utils/install.js +27 -0
- package/dist/{js/modern → esm}/utils/language.js +0 -0
- package/dist/{js/modern → esm}/utils/types.js +0 -0
- package/package.json +16 -16
- package/dist/js/modern/cli/build-watch.js +0 -31
- package/dist/js/modern/cli/build.js +0 -32
- package/dist/js/modern/cli/clear.js +0 -31
- package/dist/js/modern/cli/deploy.js +0 -36
- package/dist/js/modern/cli/install.js +0 -31
- package/dist/js/modern/cli/new.js +0 -57
- package/dist/js/modern/commands/build-watch.js +0 -44
- package/dist/js/modern/commands/build.js +0 -90
- package/dist/js/modern/commands/clear.js +0 -39
- package/dist/js/modern/commands/install.js +0 -43
- package/dist/js/modern/dag/operator.js +0 -251
- package/dist/js/modern/dag/task.js +0 -79
- package/dist/js/modern/log/time.js +0 -29
- package/dist/js/modern/parse-config/index.js +0 -51
- package/dist/js/modern/utils/install.js +0 -47
- package/dist/js/node/cli/install.js +0 -54
- package/dist/js/node/dag/operator.js +0 -278
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var operator_exports = {};
|
|
25
|
+
__export(operator_exports, {
|
|
26
|
+
DagOperator: () => DagOperator
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(operator_exports);
|
|
29
|
+
var import_p_map = __toESM(require("p-map"));
|
|
30
|
+
var import_error = require("../log/error");
|
|
31
|
+
var import_task = require("./task");
|
|
32
|
+
var import_edge_manager = require("./edge-manager");
|
|
33
|
+
var import_utils = require("./utils");
|
|
34
|
+
class DagOperator {
|
|
35
|
+
constructor(projects, projectsMap) {
|
|
36
|
+
this._createTask = (project, task) => async (stopTask = () => void 0) => {
|
|
37
|
+
await task(project, project.dependency || [], () => stopTask());
|
|
38
|
+
return project.name;
|
|
39
|
+
};
|
|
40
|
+
this._projects = projects;
|
|
41
|
+
this._projectsMap = projectsMap;
|
|
42
|
+
this._sortedProjects = [];
|
|
43
|
+
}
|
|
44
|
+
checkNodeDataExist(name) {
|
|
45
|
+
return this._projectsMap.has(name);
|
|
46
|
+
}
|
|
47
|
+
getNodeData(name, option = { checkExist: false }) {
|
|
48
|
+
if (option.checkExist) {
|
|
49
|
+
if (this._projectsMap.has(name)) {
|
|
50
|
+
return this._projectsMap.get(name);
|
|
51
|
+
} else {
|
|
52
|
+
(0, import_error.errorLog)(`No '${name}' project exist`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return this._projectsMap.get(name);
|
|
56
|
+
}
|
|
57
|
+
getNodeDependencyData(name) {
|
|
58
|
+
var _a;
|
|
59
|
+
return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependency) || [];
|
|
60
|
+
}
|
|
61
|
+
getNodeDependentData(name) {
|
|
62
|
+
var _a;
|
|
63
|
+
return ((_a = this._projectsMap.get(name)) == null ? void 0 : _a.dependent) || [];
|
|
64
|
+
}
|
|
65
|
+
getNodeAllDependencyData(name, option = { skipCircleCheck: false }) {
|
|
66
|
+
const { skipCircleCheck } = option;
|
|
67
|
+
if (!skipCircleCheck) {
|
|
68
|
+
this.checkCircle();
|
|
69
|
+
}
|
|
70
|
+
if (!this._projectsMap.has(name)) {
|
|
71
|
+
(0, import_error.errorLog)(`No '${name}' project exist`);
|
|
72
|
+
}
|
|
73
|
+
const currentNode = this._projectsMap.get(name);
|
|
74
|
+
return (0, import_utils.recursiveGetDependency)(currentNode, skipCircleCheck);
|
|
75
|
+
}
|
|
76
|
+
setNodeData(name, task) {
|
|
77
|
+
if (this._projectsMap.has(name)) {
|
|
78
|
+
task(this._projectsMap.get(name));
|
|
79
|
+
} else {
|
|
80
|
+
(0, import_error.errorLog)(`No '${name}' project exist`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async traverseAllNodes(task) {
|
|
84
|
+
const sortedNodes = this._sortedProjects.length > 0 ? this._sortedProjects : (0, import_utils.sortProjects)(this._projects);
|
|
85
|
+
const finishTaskHash = {};
|
|
86
|
+
let preNodes = [];
|
|
87
|
+
let earlyFinish = false;
|
|
88
|
+
for (const projects of sortedNodes) {
|
|
89
|
+
if (earlyFinish) {
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
await (0, import_p_map.default)(
|
|
93
|
+
projects,
|
|
94
|
+
async (project) => {
|
|
95
|
+
if (!finishTaskHash[project.name]) {
|
|
96
|
+
finishTaskHash[project.name] = true;
|
|
97
|
+
await task(
|
|
98
|
+
project,
|
|
99
|
+
this._getProjectPreviousNode(project.dependent || [], preNodes),
|
|
100
|
+
() => earlyFinish = true
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{ concurrency: projects.length }
|
|
105
|
+
);
|
|
106
|
+
preNodes = [...projects];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
checkCircle() {
|
|
110
|
+
this._checkForCyclicDependencies(this._projects, [], /* @__PURE__ */ new Set());
|
|
111
|
+
}
|
|
112
|
+
async traverseDependenciesToProjectToDependent(name, task, config = {}) {
|
|
113
|
+
await this.traverseDependenciesToProject(name, task, config);
|
|
114
|
+
await this.traverseProjectToDependent(name, task, {
|
|
115
|
+
...config,
|
|
116
|
+
withSelf: false
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
async traverseProjectToDependent(name, task, { withSelf = false, runTaskConcurrency } = {}) {
|
|
120
|
+
if (!this._projectsMap.has(name)) {
|
|
121
|
+
(0, import_error.errorLog)(`No '${name}' project exist`);
|
|
122
|
+
}
|
|
123
|
+
const traverseTargetNode = this._projectsMap.get(name);
|
|
124
|
+
const leafNodeTasks = [
|
|
125
|
+
withSelf ? this._createTask(traverseTargetNode, task) : async () => Promise.resolve(traverseTargetNode.name)
|
|
126
|
+
];
|
|
127
|
+
const taskRunner = new import_task.TaskRunner(leafNodeTasks, {
|
|
128
|
+
concurrency: runTaskConcurrency
|
|
129
|
+
});
|
|
130
|
+
const edgeManager = new import_edge_manager.EdgeManager();
|
|
131
|
+
taskRunner.on(import_task.TaskRunner.TASK_FINISH, (projectName) => {
|
|
132
|
+
const projectNode = this.getNodeData(projectName);
|
|
133
|
+
const dependent = projectNode.dependent || [];
|
|
134
|
+
for (const dependentProject of dependent) {
|
|
135
|
+
const dependency = dependentProject.dependency || [];
|
|
136
|
+
const removeNodes = dependency.filter(
|
|
137
|
+
(dependencyProject) => ![projectName, ...dependent.map((p) => p.name)].includes(
|
|
138
|
+
dependencyProject.name
|
|
139
|
+
)
|
|
140
|
+
);
|
|
141
|
+
edgeManager.reduceEdges(dependentProject, removeNodes.length + 1);
|
|
142
|
+
if (edgeManager.getEdge(dependentProject) === 0) {
|
|
143
|
+
taskRunner.addTask(this._createTask(dependentProject, task));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
await taskRunner.run();
|
|
148
|
+
}
|
|
149
|
+
async traverseDependenciesToProject(name, task, { withSelf = false, runTaskConcurrency } = {}) {
|
|
150
|
+
if (!this._projectsMap.has(name)) {
|
|
151
|
+
(0, import_error.errorLog)(`No '${name}' project exist`);
|
|
152
|
+
}
|
|
153
|
+
const traverseTargetNode = this._projectsMap.get(name);
|
|
154
|
+
const leafNodes = this._getDependencyLeafNodes(traverseTargetNode);
|
|
155
|
+
if ((leafNodes == null ? void 0 : leafNodes.length) === 0) {
|
|
156
|
+
await this._createTask(traverseTargetNode, task)();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const leafNodeTasks = leafNodes.map(
|
|
160
|
+
(project) => this._createTask(project, task)
|
|
161
|
+
);
|
|
162
|
+
const taskRunner = new import_task.TaskRunner(leafNodeTasks, {
|
|
163
|
+
concurrency: runTaskConcurrency
|
|
164
|
+
});
|
|
165
|
+
const edgeManager = new import_edge_manager.EdgeManager();
|
|
166
|
+
taskRunner.on(import_task.TaskRunner.TASK_FINISH, (projectName) => {
|
|
167
|
+
const projectNode = this.getNodeData(projectName);
|
|
168
|
+
const dependent = projectNode.dependent || [];
|
|
169
|
+
for (const dependentProject of dependent) {
|
|
170
|
+
if (![traverseTargetNode, ...leafNodes].some(
|
|
171
|
+
(n) => n.name === dependentProject.name
|
|
172
|
+
)) {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
edgeManager.reduceOneEdge(dependentProject);
|
|
176
|
+
if (dependentProject.name === traverseTargetNode.name && !withSelf) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (edgeManager.getEdge(dependentProject) === 0) {
|
|
180
|
+
taskRunner.addTask(this._createTask(dependentProject, task));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
await taskRunner.run();
|
|
185
|
+
}
|
|
186
|
+
_checkForCyclicDependencies(projects, dependencyChain, alreadyCheckedProjects) {
|
|
187
|
+
for (const project of projects) {
|
|
188
|
+
if (dependencyChain.includes(project.name)) {
|
|
189
|
+
throw new Error(
|
|
190
|
+
`${"A cyclic dependency was encountered:\n"} ${[
|
|
191
|
+
...dependencyChain,
|
|
192
|
+
project.name
|
|
193
|
+
].reverse().join("\n -> ")}
|
|
194
|
+
`
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
if (!alreadyCheckedProjects.has(project.name)) {
|
|
198
|
+
alreadyCheckedProjects.add(project.name);
|
|
199
|
+
dependencyChain.push(project.name);
|
|
200
|
+
this._checkForCyclicDependencies(
|
|
201
|
+
project.dependent,
|
|
202
|
+
dependencyChain,
|
|
203
|
+
alreadyCheckedProjects
|
|
204
|
+
);
|
|
205
|
+
dependencyChain.pop();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
_getDependencyLeafNodes(node) {
|
|
210
|
+
const dependency = node.dependency;
|
|
211
|
+
if (dependency.length === 0) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
let leafNodes = [...dependency];
|
|
215
|
+
for (const dependencyNode of dependency) {
|
|
216
|
+
leafNodes = [
|
|
217
|
+
...leafNodes,
|
|
218
|
+
...this._getDependencyLeafNodes(dependencyNode)
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
return leafNodes;
|
|
222
|
+
}
|
|
223
|
+
_getProjectPreviousNode(searchProjects, preNodes) {
|
|
224
|
+
return searchProjects.filter(
|
|
225
|
+
(p) => preNodes.map((preP) => preP.name).includes(p.name)
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
230
|
+
0 && (module.exports = {
|
|
231
|
+
DagOperator
|
|
232
|
+
});
|
|
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
mod
|
|
22
22
|
));
|
|
23
23
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
-
var __async = (__this, __arguments, generator) => {
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
var fulfilled = (value) => {
|
|
27
|
-
try {
|
|
28
|
-
step(generator.next(value));
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
var rejected = (value) => {
|
|
34
|
-
try {
|
|
35
|
-
step(generator.throw(value));
|
|
36
|
-
} catch (e) {
|
|
37
|
-
reject(e);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
24
|
var task_exports = {};
|
|
45
25
|
__export(task_exports, {
|
|
46
26
|
TaskRunner: () => TaskRunner
|
|
@@ -56,44 +36,40 @@ const _TaskRunner = class extends import_events.EventEmitter {
|
|
|
56
36
|
this._usableConcurrency = this._concurrency;
|
|
57
37
|
this._stopFlag = false;
|
|
58
38
|
}
|
|
59
|
-
run() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
);
|
|
70
|
-
});
|
|
39
|
+
async run() {
|
|
40
|
+
const tasks = this._tasks.splice(0, this._concurrency);
|
|
41
|
+
this._usableConcurrency = this._concurrency - tasks.length;
|
|
42
|
+
await (0, import_p_map.default)(
|
|
43
|
+
tasks,
|
|
44
|
+
async (task) => {
|
|
45
|
+
await this._runTask(task);
|
|
46
|
+
},
|
|
47
|
+
{ concurrency: tasks.length }
|
|
48
|
+
);
|
|
71
49
|
}
|
|
72
50
|
addTask(task) {
|
|
73
51
|
this._tasks.push(task);
|
|
74
52
|
}
|
|
75
|
-
_runTask(task) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
);
|
|
94
|
-
}
|
|
53
|
+
async _runTask(task) {
|
|
54
|
+
if (this._stopFlag) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const emitValue = await task(this._stopTask.bind(this));
|
|
58
|
+
this._usableConcurrency--;
|
|
59
|
+
this.emit(_TaskRunner.TASK_FINISH, emitValue);
|
|
60
|
+
if (this._tasks.length > 0) {
|
|
61
|
+
const nextTasks = this._tasks.splice(0, this._usableConcurrency);
|
|
62
|
+
this._usableConcurrency -= nextTasks.length;
|
|
63
|
+
if (nextTasks.length > 0) {
|
|
64
|
+
await (0, import_p_map.default)(
|
|
65
|
+
nextTasks,
|
|
66
|
+
async (_task) => {
|
|
67
|
+
await this._runTask(_task);
|
|
68
|
+
},
|
|
69
|
+
{ concurrency: nextTasks.length }
|
|
70
|
+
);
|
|
95
71
|
}
|
|
96
|
-
}
|
|
72
|
+
}
|
|
97
73
|
}
|
|
98
74
|
_stopTask() {
|
|
99
75
|
this._stopFlag = true;
|
|
File without changes
|
|
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
mod
|
|
22
22
|
));
|
|
23
23
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
-
var __async = (__this, __arguments, generator) => {
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
var fulfilled = (value) => {
|
|
27
|
-
try {
|
|
28
|
-
step(generator.next(value));
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
var rejected = (value) => {
|
|
34
|
-
try {
|
|
35
|
-
step(generator.throw(value));
|
|
36
|
-
} catch (e) {
|
|
37
|
-
reject(e);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
24
|
var build_exports = {};
|
|
45
25
|
__export(build_exports, {
|
|
46
26
|
runAllBuildTask: () => runAllBuildTask,
|
|
@@ -59,17 +39,17 @@ const createTask = (config, taskCmds = defaultBuildCmds, taskLogger) => {
|
|
|
59
39
|
disableContentHash = false,
|
|
60
40
|
enableGitHash = false
|
|
61
41
|
} = config;
|
|
62
|
-
const task = (project) =>
|
|
42
|
+
const task = async (project) => {
|
|
63
43
|
console.info("run ", project.name);
|
|
64
44
|
if (!disableContentHash) {
|
|
65
|
-
const changed =
|
|
45
|
+
const changed = await (0, import_check_project_change.checkProjectChangeByContent)(project);
|
|
66
46
|
if (!changed) {
|
|
67
47
|
console.info(`${project.name} content not change, skip`);
|
|
68
48
|
return;
|
|
69
49
|
}
|
|
70
50
|
}
|
|
71
51
|
if (enableGitHash) {
|
|
72
|
-
const changed =
|
|
52
|
+
const changed = await (0, import_check_project_change.checkProjectChangeByGit)(project, rootPath);
|
|
73
53
|
if (!changed) {
|
|
74
54
|
console.info(`${project.name} not change, skip`);
|
|
75
55
|
return;
|
|
@@ -91,7 +71,7 @@ const createTask = (config, taskCmds = defaultBuildCmds, taskLogger) => {
|
|
|
91
71
|
stderr: childProcess.stderr,
|
|
92
72
|
logConfig: { label: "BUILD: " }
|
|
93
73
|
});
|
|
94
|
-
|
|
74
|
+
await childProcess;
|
|
95
75
|
import_utils.signale.timeEnd(prefix);
|
|
96
76
|
} catch (e) {
|
|
97
77
|
(0, import_error.errorLog)(project.name, e.message);
|
|
@@ -100,11 +80,11 @@ const createTask = (config, taskCmds = defaultBuildCmds, taskLogger) => {
|
|
|
100
80
|
console.info(`${project.name} not have ${taskCmd}, skip it.`);
|
|
101
81
|
}
|
|
102
82
|
}
|
|
103
|
-
}
|
|
83
|
+
};
|
|
104
84
|
return task;
|
|
105
85
|
};
|
|
106
86
|
const defaultBuildCmds = ["build"];
|
|
107
|
-
const runBuildTask =
|
|
87
|
+
const runBuildTask = async (projectName, operator, config, taskCmds = defaultBuildCmds) => {
|
|
108
88
|
const {
|
|
109
89
|
withSelf = true,
|
|
110
90
|
onlySelf = false,
|
|
@@ -114,14 +94,14 @@ const runBuildTask = (_0, _1, _2, ..._3) => __async(void 0, [_0, _1, _2, ..._3],
|
|
|
114
94
|
const taskLogger = new import_multi_tasks_log.MultitasksLogger();
|
|
115
95
|
const task = createTask(config, taskCmds, taskLogger);
|
|
116
96
|
if (onlySelf) {
|
|
117
|
-
|
|
97
|
+
await task(operator.getNodeData(projectName, { checkExist: true }));
|
|
118
98
|
} else if (!disableWithDeps && withDept) {
|
|
119
|
-
|
|
99
|
+
await operator.traverseDependenciesToProjectToDependent(projectName, task, {
|
|
120
100
|
withSelf,
|
|
121
101
|
runTaskConcurrency: import_os.default.cpus().length
|
|
122
102
|
});
|
|
123
103
|
} else if (disableWithDeps && withDept) {
|
|
124
|
-
|
|
104
|
+
await operator.traverseProjectToDependent(projectName, task, {
|
|
125
105
|
withSelf,
|
|
126
106
|
runTaskConcurrency: import_os.default.cpus().length
|
|
127
107
|
});
|
|
@@ -131,12 +111,12 @@ const runBuildTask = (_0, _1, _2, ..._3) => __async(void 0, [_0, _1, _2, ..._3],
|
|
|
131
111
|
runTaskConcurrency: import_os.default.cpus().length
|
|
132
112
|
});
|
|
133
113
|
}
|
|
134
|
-
}
|
|
135
|
-
const runAllBuildTask =
|
|
114
|
+
};
|
|
115
|
+
const runAllBuildTask = async (operator, config, taskCmds = defaultBuildCmds) => {
|
|
136
116
|
const taskLogger = new import_multi_tasks_log.MultitasksLogger();
|
|
137
117
|
const task = createTask(config, taskCmds, taskLogger);
|
|
138
|
-
|
|
139
|
-
}
|
|
118
|
+
await operator.traverseAllNodes(task);
|
|
119
|
+
};
|
|
140
120
|
// Annotate the CommonJS export names for ESM import in node:
|
|
141
121
|
0 && (module.exports = {
|
|
142
122
|
runAllBuildTask,
|
|
File without changes
|
|
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
mod
|
|
22
22
|
));
|
|
23
23
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
-
var __async = (__this, __arguments, generator) => {
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
var fulfilled = (value) => {
|
|
27
|
-
try {
|
|
28
|
-
step(generator.next(value));
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
var rejected = (value) => {
|
|
34
|
-
try {
|
|
35
|
-
step(generator.throw(value));
|
|
36
|
-
} catch (e) {
|
|
37
|
-
reject(e);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
24
|
var deploy_exports = {};
|
|
45
25
|
__export(deploy_exports, {
|
|
46
26
|
deploy: () => deploy
|
|
@@ -103,7 +83,7 @@ const generatorAndCopyRequiredFiles = (rootPath, deployDir) => {
|
|
|
103
83
|
copy("package-lock.json");
|
|
104
84
|
checkAndUpdatePMWorkspaces(deployDir);
|
|
105
85
|
};
|
|
106
|
-
const checkAndRunDeployCommand = (monorepoPath, targetProject, packageManager) =>
|
|
86
|
+
const checkAndRunDeployCommand = async (monorepoPath, targetProject, packageManager) => {
|
|
107
87
|
var _a, _b, _c;
|
|
108
88
|
const scripts = ((_a = targetProject.extra) == null ? void 0 : _a.scripts) || {};
|
|
109
89
|
if (scripts.deploy) {
|
|
@@ -112,7 +92,7 @@ const checkAndRunDeployCommand = (monorepoPath, targetProject, packageManager) =
|
|
|
112
92
|
);
|
|
113
93
|
let runDeployCommands = ["run", "deploy"];
|
|
114
94
|
if (packageManager === "pnpm") {
|
|
115
|
-
const pnpmVersion =
|
|
95
|
+
const pnpmVersion = await (0, import_utils.getPnpmVersion)();
|
|
116
96
|
if (pnpmVersion.startsWith("6")) {
|
|
117
97
|
runDeployCommands = ["run", "deploy", "--filter", targetProject.name];
|
|
118
98
|
} else {
|
|
@@ -128,10 +108,10 @@ const checkAndRunDeployCommand = (monorepoPath, targetProject, packageManager) =
|
|
|
128
108
|
});
|
|
129
109
|
(_b = childProcess.stdout) == null ? void 0 : _b.pipe(process.stdout);
|
|
130
110
|
(_c = childProcess.stderr) == null ? void 0 : _c.pipe(process.stderr);
|
|
131
|
-
|
|
111
|
+
await childProcess;
|
|
132
112
|
}
|
|
133
|
-
}
|
|
134
|
-
const installDependency = (deployDir, packageManager) =>
|
|
113
|
+
};
|
|
114
|
+
const installDependency = async (deployDir, packageManager) => {
|
|
135
115
|
const packageJsonPath = path.join(deployDir, "package.json");
|
|
136
116
|
const packageJson = import_node_core_library.JsonFile.load(packageJsonPath);
|
|
137
117
|
const scripts = (packageJson == null ? void 0 : packageJson.scripts) || {};
|
|
@@ -153,11 +133,11 @@ const installDependency = (deployDir, packageManager) => __async(void 0, null, f
|
|
|
153
133
|
cwd: deployDir,
|
|
154
134
|
env: { NODE_ENV: void 0 }
|
|
155
135
|
});
|
|
156
|
-
|
|
157
|
-
}
|
|
136
|
+
await childProcess;
|
|
137
|
+
};
|
|
158
138
|
const excludeDirs = (filePath, dirs) => dirs.some((dir) => filePath.includes(dir));
|
|
159
139
|
const defaultDeployPath = "output";
|
|
160
|
-
const deploy = (deployProjectNames, operator, config) =>
|
|
140
|
+
const deploy = async (deployProjectNames, operator, config) => {
|
|
161
141
|
const { rootPath, packageManager, deployPath = defaultDeployPath } = config;
|
|
162
142
|
const realDeployPath = path.isAbsolute(deployPath) ? deployPath : path.join(rootPath, deployPath);
|
|
163
143
|
import_node_core_library.FileSystem.deleteFolder(realDeployPath);
|
|
@@ -172,7 +152,7 @@ const deploy = (deployProjectNames, operator, config) => __async(void 0, null, f
|
|
|
172
152
|
alldeps,
|
|
173
153
|
realDeployPath
|
|
174
154
|
);
|
|
175
|
-
|
|
155
|
+
await checkAndRunDeployCommand(rootPath, currentProject, packageManager);
|
|
176
156
|
import_node_core_library.FileSystem.ensureFolder(realDeployPath);
|
|
177
157
|
for (const [from, to] of copyMap) {
|
|
178
158
|
import_node_core_library.FileSystem.copyFiles({
|
|
@@ -190,7 +170,7 @@ const deploy = (deployProjectNames, operator, config) => __async(void 0, null, f
|
|
|
190
170
|
}
|
|
191
171
|
generatorAndCopyRequiredFiles(rootPath, realDeployPath);
|
|
192
172
|
import_utils.logger.success(`Deploy success. The deploy dir is in '${rootPath}/output'`);
|
|
193
|
-
}
|
|
173
|
+
};
|
|
194
174
|
// Annotate the CommonJS export names for ESM import in node:
|
|
195
175
|
0 && (module.exports = {
|
|
196
176
|
deploy
|
|
File without changes
|
|
@@ -21,26 +21,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
mod
|
|
22
22
|
));
|
|
23
23
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
-
var __async = (__this, __arguments, generator) => {
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
var fulfilled = (value) => {
|
|
27
|
-
try {
|
|
28
|
-
step(generator.next(value));
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
var rejected = (value) => {
|
|
34
|
-
try {
|
|
35
|
-
step(generator.throw(value));
|
|
36
|
-
} catch (e) {
|
|
37
|
-
reject(e);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
24
|
var create_task_exports = {};
|
|
45
25
|
__export(create_task_exports, {
|
|
46
26
|
createDependenciesTask: () => createDependenciesTask,
|
|
@@ -67,7 +47,7 @@ const getFinalTaskCmds = (taskCmds, project) => {
|
|
|
67
47
|
const createDependenciesTask = (config, taskCmds = import_cmds.defaultBuildWatchCmds, taskLogger) => {
|
|
68
48
|
const { packageManager } = config;
|
|
69
49
|
const timelogInstance = timeLog.initTimeLog();
|
|
70
|
-
const task = (project) =>
|
|
50
|
+
const task = async (project) => {
|
|
71
51
|
const finalTaskCmds = getFinalTaskCmds(taskCmds, project);
|
|
72
52
|
const cmd = project.extra.scripts || {};
|
|
73
53
|
for (const taskCmd of finalTaskCmds) {
|
|
@@ -84,7 +64,7 @@ const createDependenciesTask = (config, taskCmds = import_cmds.defaultBuildWatch
|
|
|
84
64
|
stderr: childProcess.stderr,
|
|
85
65
|
logConfig: { label: "WATCH: " }
|
|
86
66
|
});
|
|
87
|
-
|
|
67
|
+
await childProcess;
|
|
88
68
|
} catch (e) {
|
|
89
69
|
(0, import_error.errorLog)(project.name, e);
|
|
90
70
|
}
|
|
@@ -93,12 +73,12 @@ const createDependenciesTask = (config, taskCmds = import_cmds.defaultBuildWatch
|
|
|
93
73
|
import_utils.logger.info(`${project.name} not have ${taskCmd}, skip it.`);
|
|
94
74
|
}
|
|
95
75
|
}
|
|
96
|
-
}
|
|
76
|
+
};
|
|
97
77
|
return task;
|
|
98
78
|
};
|
|
99
79
|
const createDevTask = (config, taskCmds = import_cmds.defaultBuildWatchCmds, taskLogger) => {
|
|
100
80
|
const { packageManager } = config;
|
|
101
|
-
const task = (project) =>
|
|
81
|
+
const task = async (project) => {
|
|
102
82
|
const devCmds = [taskCmds[0]];
|
|
103
83
|
const cmd = project.extra.scripts || {};
|
|
104
84
|
for (const taskCmd of devCmds) {
|
|
@@ -114,7 +94,7 @@ const createDevTask = (config, taskCmds = import_cmds.defaultBuildWatchCmds, tas
|
|
|
114
94
|
stderr: childProcess.stderr,
|
|
115
95
|
logConfig: { label: `${taskCmd.toUpperCase()}: ` }
|
|
116
96
|
});
|
|
117
|
-
const ret =
|
|
97
|
+
const ret = await childProcess;
|
|
118
98
|
console.info(ret);
|
|
119
99
|
} catch (e) {
|
|
120
100
|
(0, import_error.errorLog)(project.name, e);
|
|
@@ -123,7 +103,7 @@ const createDevTask = (config, taskCmds = import_cmds.defaultBuildWatchCmds, tas
|
|
|
123
103
|
import_utils.logger.info(`${project.name} not have ${taskCmd}, skip it.`);
|
|
124
104
|
}
|
|
125
105
|
}
|
|
126
|
-
}
|
|
106
|
+
};
|
|
127
107
|
return task;
|
|
128
108
|
};
|
|
129
109
|
// Annotate the CommonJS export names for ESM import in node:
|