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.
@@ -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
  /**