nx 20.0.7 → 20.1.0-beta.0
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/post-install.js +2 -2
- package/package.json +12 -38
- package/src/adapter/angular-json.js +2 -8
- package/src/command-line/format/command-object.js +9 -0
- package/src/command-line/format/format.js +3 -1
- package/src/core/graph/main.js +1 -1
- package/src/core/graph/styles.js +1 -1
- package/src/devkit-internals.d.ts +1 -0
- package/src/devkit-internals.js +3 -1
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/plugins/js/utils/config.js +2 -9
- package/src/tasks-runner/create-task-graph.d.ts +15 -0
- package/src/tasks-runner/create-task-graph.js +37 -9
- package/src/utils/command-line-utils.d.ts +1 -0
- package/src/utils/print-help.js +3 -9
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)}]);
|
@@ -24,3 +24,4 @@ export { LoadedNxPlugin } from './project-graph/plugins/internal-api';
|
|
24
24
|
export * from './project-graph/error-types';
|
25
25
|
export { registerTsProject } from './plugins/js/utils/register';
|
26
26
|
export { interpolate } from './tasks-runner/utils';
|
27
|
+
export { isCI } from './utils/is-ci';
|
package/src/devkit-internals.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.interpolate = exports.registerTsProject = exports.LoadedNxPlugin = exports.retrieveProjectConfigurations = exports.findProjectForPath = exports.createProjectRootMappingsFromProjectConfigurations = exports.hashWithWorkspaceContext = exports.hashObject = exports.splitByColons = exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.findMatchingConfigFiles = exports.readProjectConfigurationsFromRootMap = exports.mergeTargetConfigurations = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
|
3
|
+
exports.isCI = exports.interpolate = exports.registerTsProject = exports.LoadedNxPlugin = exports.retrieveProjectConfigurations = exports.findProjectForPath = exports.createProjectRootMappingsFromProjectConfigurations = exports.hashWithWorkspaceContext = exports.hashObject = exports.splitByColons = exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.findMatchingConfigFiles = exports.readProjectConfigurationsFromRootMap = exports.mergeTargetConfigurations = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
/**
|
6
6
|
* Note to developers: STOP! These exports are available via requireNx in @nx/devkit.
|
@@ -50,3 +50,5 @@ var register_1 = require("./plugins/js/utils/register");
|
|
50
50
|
Object.defineProperty(exports, "registerTsProject", { enumerable: true, get: function () { return register_1.registerTsProject; } });
|
51
51
|
var utils_1 = require("./tasks-runner/utils");
|
52
52
|
Object.defineProperty(exports, "interpolate", { enumerable: true, get: function () { return utils_1.interpolate; } });
|
53
|
+
var is_ci_1 = require("./utils/is-ci");
|
54
|
+
Object.defineProperty(exports, "isCI", { enumerable: true, get: function () { return is_ci_1.isCI; } });
|
Binary file
|
@@ -6,7 +6,7 @@ const fileutils_1 = require("../../../utils/fileutils");
|
|
6
6
|
const workspace_root_1 = require("../../../utils/workspace-root");
|
7
7
|
const fs_1 = require("fs");
|
8
8
|
function jsPluginConfig(nxJson) {
|
9
|
-
const nxJsonConfig = nxJson?.pluginsConfig?.['@nx/js']
|
9
|
+
const nxJsonConfig = nxJson?.pluginsConfig?.['@nx/js'];
|
10
10
|
// using lerna _before_ installing deps is causing an issue when parsing lockfile.
|
11
11
|
// See: https://github.com/lerna/lerna/issues/3807
|
12
12
|
// Note that previous attempt to fix this caused issues with Nx itself, thus we're checking
|
@@ -42,14 +42,7 @@ function jsPluginConfig(nxJson) {
|
|
42
42
|
packageJsonDeps['@nx/next'] ||
|
43
43
|
packageJsonDeps['@nx/react'] ||
|
44
44
|
packageJsonDeps['@nx/angular'] ||
|
45
|
-
packageJsonDeps['@nx/web']
|
46
|
-
packageJsonDeps['@nrwl/workspace'] ||
|
47
|
-
packageJsonDeps['@nrwl/js'] ||
|
48
|
-
packageJsonDeps['@nrwl/node'] ||
|
49
|
-
packageJsonDeps['@nrwl/next'] ||
|
50
|
-
packageJsonDeps['@nrwl/react'] ||
|
51
|
-
packageJsonDeps['@nrwl/angular'] ||
|
52
|
-
packageJsonDeps['@nrwl/web']) {
|
45
|
+
packageJsonDeps['@nx/web']) {
|
53
46
|
return {
|
54
47
|
analyzePackageJson: true,
|
55
48
|
analyzeLockfile,
|
@@ -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)) {
|
@@ -34,6 +34,7 @@ export interface NxArgs {
|
|
34
34
|
batch?: boolean;
|
35
35
|
excludeTaskDependencies?: boolean;
|
36
36
|
skipSync?: boolean;
|
37
|
+
sortRootTsconfigPaths?: boolean;
|
37
38
|
}
|
38
39
|
export declare function createOverrides(__overrides_unparsed__?: string[]): Record<string, any>;
|
39
40
|
export declare function getBaseRef(nxJson: NxJsonConfiguration): string;
|
package/src/utils/print-help.js
CHANGED
@@ -110,9 +110,7 @@ function generateExecutorOverviewOutput({ pluginName, name, description, }) {
|
|
110
110
|
},
|
111
111
|
{
|
112
112
|
text: `${pluginName}:${name}` +
|
113
|
-
(pluginName.startsWith('@
|
114
|
-
? chalk.dim(` (v${versions_1.nxVersion})`)
|
115
|
-
: ''),
|
113
|
+
(pluginName.startsWith('@nx/') ? chalk.dim(` (v${versions_1.nxVersion})`) : ''),
|
116
114
|
padding: [1, 0, 0, 0],
|
117
115
|
},
|
118
116
|
]);
|
@@ -220,14 +218,10 @@ function generateExamplesOutput(schema) {
|
|
220
218
|
// TODO: generalize link generation so it works for non @nx plugins as well
|
221
219
|
function generateLinkOutput({ pluginName, name, type, }) {
|
222
220
|
const nxPackagePrefix = '@nx/';
|
223
|
-
|
224
|
-
if (!pluginName.startsWith(nxPackagePrefix) &&
|
225
|
-
!pluginName.startsWith(nrwlPackagePrefix)) {
|
221
|
+
if (!pluginName.startsWith(nxPackagePrefix)) {
|
226
222
|
return '';
|
227
223
|
}
|
228
|
-
const link = `https://nx.dev/nx-api/${pluginName.substring(
|
229
|
-
? nxPackagePrefix.length
|
230
|
-
: nrwlPackagePrefix.length)}/${type}/${name}`;
|
224
|
+
const link = `https://nx.dev/nx-api/${pluginName.substring(nxPackagePrefix.length)}/${type}/${name}`;
|
231
225
|
return `\n\n${chalk.dim('Find more information and examples at:')} ${chalk.bold(link)}`;
|
232
226
|
}
|
233
227
|
/**
|