nx 20.0.7 → 20.1.0-beta.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/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
|
/**
|