nx 20.1.0-canary.20241101-d4f4dac → 20.1.0-canary.20241105-b925f8c
Sign up to get free protection for your applications and to get access to all the features.
package/src/core/graph/styles.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[532],{
|
1
|
+
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[532],{8476:()=>{}},s=>{var e;e=8476,s(s.s=e)}]);
|
Binary file
|
@@ -22,6 +22,21 @@ export declare class ProcessTasks {
|
|
22
22
|
createTask(id: string, project: ProjectGraphProjectNode, target: string, resolvedConfiguration: string | undefined, overrides: Object): Task;
|
23
23
|
resolveConfiguration(project: ProjectGraphProjectNode, target: string, configuration: string | undefined): string;
|
24
24
|
getId(project: string, target: string, configuration: string | undefined): string;
|
25
|
+
/**
|
26
|
+
* this function is used to get the non dummy dependencies of a task recursively
|
27
|
+
* For example, when we have the following dependencies:
|
28
|
+
* {
|
29
|
+
* 'app1:compile': [ 'app2:__nx_dummy_task__' ],
|
30
|
+
* 'app2:__nx_dummy_task__': [ 'app3:__nx_dummy_task__' ],
|
31
|
+
* 'app3:__nx_dummy_task__': [ 'app4:precompile' ],
|
32
|
+
* 'app4:precompile': []
|
33
|
+
* }
|
34
|
+
* getNonDummyDeps('app1:compile') will return ['app1:compile']
|
35
|
+
* getNonDummyDeps('app2:__nx_dummy_task__') will return ['app4:precompile']
|
36
|
+
* getNonDummyDeps('app3:__nx_dummy_task__') will return ['app4:precompile']
|
37
|
+
* getNonDummyDeps('app4:precompile') will return ['app4:precompile']
|
38
|
+
*/
|
39
|
+
private getNonDummyDeps;
|
25
40
|
private filterDummyTasks;
|
26
41
|
}
|
27
42
|
export declare function createTaskGraph(projectGraph: ProjectGraph, extraTargetDependencies: TargetDependencies, projectNames: string[], targets: string[], configuration: string | undefined, overrides: Object, excludeTaskDependencies?: boolean): TaskGraph;
|
@@ -6,6 +6,7 @@ exports.mapTargetDefaultsToDependencies = mapTargetDefaultsToDependencies;
|
|
6
6
|
const utils_1 = require("./utils");
|
7
7
|
const project_graph_utils_1 = require("../utils/project-graph-utils");
|
8
8
|
const output_1 = require("../utils/output");
|
9
|
+
const task_graph_utils_1 = require("./task-graph-utils");
|
9
10
|
const DUMMY_TASK_TARGET = '__nx_dummy_task__';
|
10
11
|
class ProcessTasks {
|
11
12
|
constructor(extraTargetDependencies, projectGraph) {
|
@@ -139,7 +140,7 @@ class ProcessTasks {
|
|
139
140
|
else {
|
140
141
|
const dummyId = this.getId(depProject.name, DUMMY_TASK_TARGET, undefined);
|
141
142
|
this.dependencies[task.id].push(dummyId);
|
142
|
-
this.dependencies[dummyId]
|
143
|
+
this.dependencies[dummyId] ??= [];
|
143
144
|
const noopTask = this.createDummyTask(dummyId, task);
|
144
145
|
this.processTask(noopTask, depProject.name, configuration, overrides);
|
145
146
|
}
|
@@ -188,18 +189,45 @@ class ProcessTasks {
|
|
188
189
|
}
|
189
190
|
return id;
|
190
191
|
}
|
192
|
+
/**
|
193
|
+
* this function is used to get the non dummy dependencies of a task recursively
|
194
|
+
* For example, when we have the following dependencies:
|
195
|
+
* {
|
196
|
+
* 'app1:compile': [ 'app2:__nx_dummy_task__' ],
|
197
|
+
* 'app2:__nx_dummy_task__': [ 'app3:__nx_dummy_task__' ],
|
198
|
+
* 'app3:__nx_dummy_task__': [ 'app4:precompile' ],
|
199
|
+
* 'app4:precompile': []
|
200
|
+
* }
|
201
|
+
* getNonDummyDeps('app1:compile') will return ['app1:compile']
|
202
|
+
* getNonDummyDeps('app2:__nx_dummy_task__') will return ['app4:precompile']
|
203
|
+
* getNonDummyDeps('app3:__nx_dummy_task__') will return ['app4:precompile']
|
204
|
+
* getNonDummyDeps('app4:precompile') will return ['app4:precompile']
|
205
|
+
*/
|
206
|
+
getNonDummyDeps(currentTask, originalTask, cycle) {
|
207
|
+
if (currentTask === originalTask) {
|
208
|
+
return [];
|
209
|
+
}
|
210
|
+
else if (currentTask.endsWith(DUMMY_TASK_TARGET)) {
|
211
|
+
if (cycle?.length && cycle?.includes(currentTask)) {
|
212
|
+
return [];
|
213
|
+
}
|
214
|
+
// if not a cycle, recursively get the non dummy dependencies
|
215
|
+
return (this.dependencies[currentTask]?.flatMap((dep) => this.getNonDummyDeps(dep, originalTask, cycle)) ?? []);
|
216
|
+
}
|
217
|
+
else {
|
218
|
+
return [currentTask];
|
219
|
+
}
|
220
|
+
}
|
191
221
|
filterDummyTasks() {
|
222
|
+
const cycle = (0, task_graph_utils_1.findCycle)({ dependencies: this.dependencies });
|
192
223
|
for (const [key, deps] of Object.entries(this.dependencies)) {
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
normalizedDeps.push(...this.
|
197
|
-
}
|
198
|
-
else {
|
199
|
-
normalizedDeps.push(dep);
|
224
|
+
if (!key.endsWith(DUMMY_TASK_TARGET)) {
|
225
|
+
const normalizedDeps = [];
|
226
|
+
for (const dep of deps) {
|
227
|
+
normalizedDeps.push(...this.getNonDummyDeps(dep, key, cycle));
|
200
228
|
}
|
229
|
+
this.dependencies[key] = normalizedDeps;
|
201
230
|
}
|
202
|
-
this.dependencies[key] = normalizedDeps;
|
203
231
|
}
|
204
232
|
for (const key of Object.keys(this.dependencies)) {
|
205
233
|
if (key.endsWith(DUMMY_TASK_TARGET)) {
|