nx 20.0.7 → 20.0.8
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/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "20.0.
|
3
|
+
"version": "20.0.8",
|
4
4
|
"private": false,
|
5
5
|
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
|
6
6
|
"repository": {
|
@@ -80,16 +80,16 @@
|
|
80
80
|
}
|
81
81
|
},
|
82
82
|
"optionalDependencies": {
|
83
|
-
"@nx/nx-darwin-x64": "20.0.
|
84
|
-
"@nx/nx-darwin-arm64": "20.0.
|
85
|
-
"@nx/nx-linux-x64-gnu": "20.0.
|
86
|
-
"@nx/nx-linux-x64-musl": "20.0.
|
87
|
-
"@nx/nx-win32-x64-msvc": "20.0.
|
88
|
-
"@nx/nx-linux-arm64-gnu": "20.0.
|
89
|
-
"@nx/nx-linux-arm64-musl": "20.0.
|
90
|
-
"@nx/nx-linux-arm-gnueabihf": "20.0.
|
91
|
-
"@nx/nx-win32-arm64-msvc": "20.0.
|
92
|
-
"@nx/nx-freebsd-x64": "20.0.
|
83
|
+
"@nx/nx-darwin-x64": "20.0.8",
|
84
|
+
"@nx/nx-darwin-arm64": "20.0.8",
|
85
|
+
"@nx/nx-linux-x64-gnu": "20.0.8",
|
86
|
+
"@nx/nx-linux-x64-musl": "20.0.8",
|
87
|
+
"@nx/nx-win32-x64-msvc": "20.0.8",
|
88
|
+
"@nx/nx-linux-arm64-gnu": "20.0.8",
|
89
|
+
"@nx/nx-linux-arm64-musl": "20.0.8",
|
90
|
+
"@nx/nx-linux-arm-gnueabihf": "20.0.8",
|
91
|
+
"@nx/nx-win32-arm64-msvc": "20.0.8",
|
92
|
+
"@nx/nx-freebsd-x64": "20.0.8"
|
93
93
|
},
|
94
94
|
"nx-migrations": {
|
95
95
|
"migrations": "./migrations.json",
|
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)) {
|