nx 20.0.3 → 20.0.5

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",
3
+ "version": "20.0.5",
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.3",
84
- "@nx/nx-darwin-arm64": "20.0.3",
85
- "@nx/nx-linux-x64-gnu": "20.0.3",
86
- "@nx/nx-linux-x64-musl": "20.0.3",
87
- "@nx/nx-win32-x64-msvc": "20.0.3",
88
- "@nx/nx-linux-arm64-gnu": "20.0.3",
89
- "@nx/nx-linux-arm64-musl": "20.0.3",
90
- "@nx/nx-linux-arm-gnueabihf": "20.0.3",
91
- "@nx/nx-win32-arm64-msvc": "20.0.3",
92
- "@nx/nx-freebsd-x64": "20.0.3"
83
+ "@nx/nx-darwin-x64": "20.0.5",
84
+ "@nx/nx-darwin-arm64": "20.0.5",
85
+ "@nx/nx-linux-x64-gnu": "20.0.5",
86
+ "@nx/nx-linux-x64-musl": "20.0.5",
87
+ "@nx/nx-win32-x64-msvc": "20.0.5",
88
+ "@nx/nx-linux-arm64-gnu": "20.0.5",
89
+ "@nx/nx-linux-arm64-musl": "20.0.5",
90
+ "@nx/nx-linux-arm-gnueabihf": "20.0.5",
91
+ "@nx/nx-win32-arm64-msvc": "20.0.5",
92
+ "@nx/nx-freebsd-x64": "20.0.5"
93
93
  },
94
94
  "nx-migrations": {
95
95
  "migrations": "./migrations.json",
@@ -17,6 +17,7 @@ const plugins_1 = require("../../utils/plugins");
17
17
  const versions_1 = require("../../utils/versions");
18
18
  const workspace_root_1 = require("../../utils/workspace-root");
19
19
  const add_nx_scripts_1 = require("../init/implementation/dot-nx/add-nx-scripts");
20
+ const semver_1 = require("semver");
20
21
  function addHandler(options) {
21
22
  return (0, handle_errors_1.handleErrors)(options.verbose, async () => {
22
23
  output_1.output.addNewline();
@@ -33,8 +34,14 @@ async function installPackage(pkgName, version, nxJson) {
33
34
  const spinner = ora(`Installing ${pkgName}@${version}...`);
34
35
  spinner.start();
35
36
  if ((0, fs_1.existsSync)('package.json')) {
36
- const pmc = (0, package_manager_1.getPackageManagerCommand)();
37
- await new Promise((resolve) => (0, child_process_1.exec)(`${pmc.addDev} ${pkgName}@${version}`, {
37
+ const pm = (0, package_manager_1.detectPackageManager)();
38
+ const pmv = (0, package_manager_1.getPackageManagerVersion)(pm);
39
+ const pmc = (0, package_manager_1.getPackageManagerCommand)(pm);
40
+ // if we explicitly specify latest in yarn berry, it won't resolve the version
41
+ const command = pm === 'yarn' && (0, semver_1.gte)(pmv, '2.0.0') && version === 'latest'
42
+ ? `${pmc.addDev} ${pkgName}`
43
+ : `${pmc.addDev} ${pkgName}@${version}`;
44
+ await new Promise((resolve) => (0, child_process_1.exec)(command, {
38
45
  windowsHide: false,
39
46
  }, (error, stdout) => {
40
47
  if (error) {
@@ -101,7 +101,7 @@ function createMissingConformanceCommand(command) {
101
101
  bodyLines: [
102
102
  `In order to use the \`nx ${command}\` command you must have an active Powerpack license and the \`@nx/powerpack-conformance\` plugin installed.`,
103
103
  '',
104
- 'To learn more, visit https://nx.dev/features/powerpack/conformance',
104
+ 'To learn more, visit https://nx.dev/nx-enterprise/powerpack/conformance',
105
105
  ],
106
106
  });
107
107
  process.exit(1);
@@ -28,7 +28,7 @@ export declare class ImportResult {
28
28
 
29
29
  export declare class NxCache {
30
30
  cacheDirectory: string
31
- constructor(workspaceRoot: string, cachePath: string, dbConnection: ExternalObject<Connection>, linkTaskDetails?: boolean | undefined | null)
31
+ constructor(workspaceRoot: string, cachePath: string, dbConnection: ExternalObject<NxDbConnection>, linkTaskDetails?: boolean | undefined | null)
32
32
  get(hash: string): CachedResult | null
33
33
  put(hash: string, terminalOutput: string, outputs: Array<string>, code: number): void
34
34
  applyRemoteCacheResults(hash: string, result: CachedResult): void
@@ -39,7 +39,7 @@ export declare class NxCache {
39
39
  }
40
40
 
41
41
  export declare class NxTaskHistory {
42
- constructor(db: ExternalObject<Connection>)
42
+ constructor(db: ExternalObject<NxDbConnection>)
43
43
  recordTaskRuns(taskRuns: Array<TaskRun>): void
44
44
  getFlakyTasks(hashes: Array<string>): Array<string>
45
45
  getEstimatedTaskTimings(targets: Array<TaskTarget>): Record<string, number>
@@ -56,7 +56,7 @@ export declare class RustPseudoTerminal {
56
56
  }
57
57
 
58
58
  export declare class TaskDetails {
59
- constructor(db: ExternalObject<Connection>)
59
+ constructor(db: ExternalObject<NxDbConnection>)
60
60
  recordTaskDetails(tasks: Array<HashedTask>): void
61
61
  }
62
62
 
@@ -97,7 +97,7 @@ export interface CachedResult {
97
97
  outputsPath: string
98
98
  }
99
99
 
100
- export declare export function connectToNxDb(cacheDir: string, nxVersion: string, dbName?: string | undefined | null): ExternalObject<Connection>
100
+ export declare export function connectToNxDb(cacheDir: string, nxVersion: string, dbName?: string | undefined | null): ExternalObject<NxDbConnection>
101
101
 
102
102
  export declare export function copy(src: string, dest: string): void
103
103
 
Binary file
@@ -18,6 +18,7 @@ export declare class DbCache {
18
18
  private cache;
19
19
  private remoteCache;
20
20
  private remoteCachePromise;
21
+ private isVerbose;
21
22
  constructor(options: {
22
23
  nxCloudRemoteCache: RemoteCache;
23
24
  });
@@ -39,6 +39,7 @@ class DbCache {
39
39
  constructor(options) {
40
40
  this.options = options;
41
41
  this.cache = new native_1.NxCache(workspace_root_1.workspaceRoot, cache_directory_1.cacheDir, (0, db_connection_1.getDbConnection)());
42
+ this.isVerbose = process.env.NX_VERBOSE_LOGGING === 'true';
42
43
  }
43
44
  async init() {
44
45
  // This should be cheap because we've already loaded
@@ -522,7 +522,7 @@ function getRunner(nxArgs, nxJson) {
522
522
  title: `Custom task runners will no longer be supported in Nx 21.`,
523
523
  bodyLines: [
524
524
  `Use Nx Cloud or the Nx Powerpack caches instead.`,
525
- `For more information, see https://nx.dev/features/powerpack/custom-caching`,
525
+ `For more information, see https://nx.dev/nx-enterprise/powerpack/custom-caching`,
526
526
  ],
527
527
  });
528
528
  }
@@ -2,4 +2,4 @@ import { ExternalObject } from '../native';
2
2
  export declare function getDbConnection(opts?: {
3
3
  directory?: string;
4
4
  dbName?: string;
5
- }): ExternalObject<Connection>;
5
+ }): ExternalObject<NxDbConnection>;
@@ -1,2 +0,0 @@
1
- import { Tree } from '../../generators/tree';
2
- export default function (tree: Tree): Promise<void>;
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- const format_changed_files_with_prettier_if_available_1 = require("../../generators/internal-utils/format-changed-files-with-prettier-if-available");
5
- const project_configuration_1 = require("../../generators/utils/project-configuration");
6
- const nx_json_1 = require("../../generators/utils/nx-json");
7
- const path_1 = require("../../utils/path");
8
- const path_2 = require("path");
9
- const json_1 = require("../../generators/utils/json");
10
- const skippedFiles = [
11
- 'package.json', // Not to be added to filesets
12
- 'babel.config.json', // Will be handled by various plugins
13
- 'karma.conf.js', // Will be handled by @nx/angular
14
- 'jest.preset.js', // Will be handled by @nx/jest
15
- '.storybook', // Will be handled by @nx/storybook
16
- // Will be handled by @nx/eslint
17
- '.eslintrc.json',
18
- '.eslintrc.js',
19
- ];
20
- async function default_1(tree) {
21
- // If the workspace doesn't have a nx.json, don't make any changes
22
- if (!tree.exists('nx.json')) {
23
- return;
24
- }
25
- const nxJson = (0, nx_json_1.readNxJson)(tree);
26
- // If this is a npm workspace, don't make any changes
27
- if (nxJson.extends === 'nx/presets/npm.json') {
28
- return;
29
- }
30
- nxJson.namedInputs ??= {
31
- default: ['{projectRoot}/**/*', 'sharedGlobals'],
32
- sharedGlobals: [],
33
- production: ['default'],
34
- };
35
- if (nxJson.namedInputs.default) {
36
- if (!nxJson.namedInputs.production) {
37
- nxJson.namedInputs.production = ['default'];
38
- }
39
- else if (!nxJson.namedInputs.production.includes('default')) {
40
- nxJson.namedInputs.production = [
41
- 'default',
42
- ...nxJson.namedInputs.production,
43
- ];
44
- }
45
- }
46
- if (isBuildATarget(tree)) {
47
- nxJson.targetDefaults ??= {};
48
- nxJson.targetDefaults.build ??= {};
49
- nxJson.targetDefaults.build.inputs ??= ['production', '^production'];
50
- }
51
- if (nxJson.implicitDependencies) {
52
- const projects = (0, project_configuration_1.getProjects)(tree);
53
- for (const [files, dependents] of Object.entries(nxJson.implicitDependencies)) {
54
- // Skip these because other plugins take care of them
55
- if (skippedFiles.includes(files)) {
56
- continue;
57
- }
58
- else if (Array.isArray(dependents)) {
59
- nxJson.namedInputs.projectSpecificFiles = [];
60
- const defaultFileset = new Set(nxJson.namedInputs.default ?? ['{projectRoot}/**/*', 'sharedGlobals']);
61
- defaultFileset.add('projectSpecificFiles');
62
- nxJson.namedInputs.default = Array.from(defaultFileset);
63
- for (const dependent of dependents) {
64
- const project = projects.get(dependent);
65
- project.namedInputs ??= {};
66
- const projectSpecificFileset = new Set(project.namedInputs.projectSpecificFiles ?? []);
67
- projectSpecificFileset.add((0, path_1.joinPathFragments)('{workspaceRoot}', files));
68
- project.namedInputs.projectSpecificFiles = Array.from(projectSpecificFileset);
69
- try {
70
- (0, project_configuration_1.updateProjectConfiguration)(tree, dependent, project);
71
- }
72
- catch {
73
- if (tree.exists((0, path_2.join)(project.root, 'package.json'))) {
74
- (0, json_1.updateJson)(tree, (0, path_2.join)(project.root, 'package.json'), (json) => {
75
- json.nx ??= {};
76
- json.nx.namedInputs ??= {};
77
- json.nx.namedInputs.projectSpecificFiles ??=
78
- project.namedInputs.projectSpecificFiles;
79
- return json;
80
- });
81
- }
82
- }
83
- }
84
- }
85
- else {
86
- nxJson.namedInputs.sharedGlobals.push((0, path_1.joinPathFragments)('{workspaceRoot}', files));
87
- }
88
- }
89
- delete nxJson.implicitDependencies;
90
- }
91
- (0, nx_json_1.updateNxJson)(tree, nxJson);
92
- await (0, format_changed_files_with_prettier_if_available_1.formatChangedFilesWithPrettierIfAvailable)(tree);
93
- }
94
- function isBuildATarget(tree) {
95
- const projects = (0, project_configuration_1.getProjects)(tree);
96
- for (const [_, project] of projects) {
97
- if (project.targets?.build) {
98
- return true;
99
- }
100
- }
101
- return false;
102
- }
@@ -1,2 +0,0 @@
1
- import { Tree } from '../../generators/tree';
2
- export default function removeProjectNameAndRootFormat(tree: Tree): Promise<void>;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = removeProjectNameAndRootFormat;
4
- const json_1 = require("../../generators/utils/json");
5
- const format_changed_files_with_prettier_if_available_1 = require("../../generators/internal-utils/format-changed-files-with-prettier-if-available");
6
- async function removeProjectNameAndRootFormat(tree) {
7
- if (!tree.exists('nx.json')) {
8
- return;
9
- }
10
- (0, json_1.updateJson)(tree, 'nx.json', (nxJson) => {
11
- if (!nxJson.workspaceLayout) {
12
- return nxJson;
13
- }
14
- delete nxJson.workspaceLayout.projectNameAndRootFormat;
15
- if (Object.keys(nxJson.workspaceLayout).length === 0) {
16
- delete nxJson.workspaceLayout;
17
- }
18
- return nxJson;
19
- });
20
- await (0, format_changed_files_with_prettier_if_available_1.formatChangedFilesWithPrettierIfAvailable)(tree);
21
- }