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.
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk=self.webpackChunk||[]).push([[532],{71970:()=>{}},s=>{var e;e=71970,s(s.s=e)}]);
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';
@@ -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'] ?? nxJson?.pluginsConfig?.['@nrwl/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
- const normalizedDeps = [];
194
- for (const dep of deps) {
195
- if (dep.endsWith(DUMMY_TASK_TARGET)) {
196
- normalizedDeps.push(...this.dependencies[dep].filter((d) => !d.endsWith(DUMMY_TASK_TARGET)));
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;
@@ -110,9 +110,7 @@ function generateExecutorOverviewOutput({ pluginName, name, description, }) {
110
110
  },
111
111
  {
112
112
  text: `${pluginName}:${name}` +
113
- (pluginName.startsWith('@nrwl/')
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
- const nrwlPackagePrefix = '@nrwl/';
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(pluginName.startsWith(nxPackagePrefix)
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
  /**