@nx/workspace 24.0.0 → 24.0.2

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,5 +1,6 @@
1
1
  import { ProjectConfiguration, Tree } from '@nx/devkit';
2
2
  import { NormalizedSchema } from '../schema';
3
+ export declare const MOVED_JEST_CONFIG_EXTENSIONS: string;
3
4
  /**
4
5
  * Moves a project to the given destination path
5
6
  *
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MOVED_JEST_CONFIG_EXTENSIONS = void 0;
3
4
  exports.moveProjectFiles = moveProjectFiles;
4
5
  const devkit_1 = require("@nx/devkit");
5
6
  const path_1 = require("path");
7
+ exports.MOVED_JEST_CONFIG_EXTENSIONS = ['js', 'ts', 'cts'].join('|');
6
8
  /**
7
9
  * Moves a project to the given destination path
8
10
  *
@@ -20,7 +22,7 @@ function moveProjectFiles(tree, schema, project) {
20
22
  '.eslintrc.json',
21
23
  'eslint.config.js',
22
24
  'eslint.config.cjs',
23
- /^jest\.config\.((app|lib)\.)?[jt]s$/,
25
+ new RegExp(`^jest\\.config\\.((app|lib)\\.)?(${exports.MOVED_JEST_CONFIG_EXTENSIONS})$`),
24
26
  /^vite\.config\.m?[jt]s$/,
25
27
  /^webpack.*\.js$/,
26
28
  'index.html', // Vite
@@ -44,11 +46,18 @@ function moveProjectFiles(tree, schema, project) {
44
46
  return knownRootProjectFolders.includes(baseDir);
45
47
  }
46
48
  };
49
+ // The workspace Jest config runs every project's config, so it stays
50
+ const isWorkspaceJestConfig = (file) => new RegExp(`^jest\\.config\\.(${exports.MOVED_JEST_CONFIG_EXTENSIONS})$`).test(file) && tree.read(file, 'utf-8').includes('getJestProjectsAsync()');
47
51
  (0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
48
- if (project.root === '.' && !isKnownRootProjectFile(file))
52
+ if (project.root === '.' &&
53
+ (!isKnownRootProjectFile(file) || isWorkspaceJestConfig(file)))
49
54
  return;
50
55
  // This is a rename but Angular Devkit isn't capable of writing to a file after it's renamed so this is a workaround
51
- const relativeFromOriginalSource = (0, path_1.relative)(project.root, file);
56
+ let relativeFromOriginalSource = (0, path_1.relative)(project.root, file);
57
+ if (project.root === '.') {
58
+ // Before Nx 24, @nx/jest:configuration renamed a root project's config to `jest.config.app|lib`
59
+ relativeFromOriginalSource = relativeFromOriginalSource.replace(new RegExp(`^jest\\.config\\.(app|lib)\\.(?=(${exports.MOVED_JEST_CONFIG_EXTENSIONS})$)`), 'jest.config.');
60
+ }
52
61
  const newFilePath = (0, path_1.join)(schema.relativeToRootDestination, relativeFromOriginalSource);
53
62
  const content = tree.read(file);
54
63
  tree.write(newFilePath, content);
@@ -7,6 +7,7 @@ const tslib_1 = require("tslib");
7
7
  const devkit_1 = require("@nx/devkit");
8
8
  const path = tslib_1.__importStar(require("path"));
9
9
  const path_1 = require("path");
10
+ const move_project_files_1 = require("./move-project-files");
10
11
  const allowedExt = ['.ts', '.js', '.json', '.cts', '.cjs'];
11
12
  /**
12
13
  * Updates the files in the root of the project
@@ -37,6 +38,9 @@ function updateFilesForRootProjects(tree, schema, project) {
37
38
  .split(path.sep)
38
39
  // Include trailing slash because the regex matches the trailing slash in "./"
39
40
  .join('/') + '/';
41
+ // createProjectConfigurationInNewDestination prefixes root paths in the
42
+ // project configuration with the destination
43
+ const rootDirPrefixes = ['', './', `${schema.relativeToRootDestination}/`];
40
44
  for (const file of tree.children(schema.relativeToRootDestination)) {
41
45
  const ext = (0, path_1.extname)(file);
42
46
  if (!allowedExt.includes(ext)) {
@@ -48,7 +52,13 @@ function updateFilesForRootProjects(tree, schema, project) {
48
52
  continue;
49
53
  }
50
54
  const oldContent = tree.read((0, path_1.join)(schema.relativeToRootDestination, file), 'utf-8');
51
- let newContent = oldContent.replace(regex, newRelativeRoot);
55
+ let newContent = oldContent
56
+ .replace(regex, newRelativeRoot)
57
+ // The moved config is `jest.config.<ext>`, so plain `jest` merges with the
58
+ // target @nx/jest/plugin infers at the new root
59
+ .replace(new RegExp(`(["'\`])jest --config jest\\.config\\.(?:app|lib)\\.(?:${move_project_files_1.MOVED_JEST_CONFIG_EXTENSIONS})\\1`, 'g'), '$1jest$1')
60
+ // moveProjectFiles drops `.app`/`.lib` from the root-level Jest config only
61
+ .replace(new RegExp(`([^\\s'"\`=]*?)jest\\.config\\.(?:app|lib)\\.(?=(?:${move_project_files_1.MOVED_JEST_CONFIG_EXTENSIONS})(?!\\w))`, 'g'), (reference, dir) => rootDirPrefixes.includes(dir) ? `${dir}jest.config.` : reference);
52
62
  if (file === 'tsconfig.json') {
53
63
  // Since we skipped updating "extends" earlier, need to point to the base config.
54
64
  newContent = newContent.replace(`./tsconfig.base.json`, newRelativeRoot + `tsconfig.base.json`);
@@ -14,7 +14,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
14
14
  '@angular-devkit/core'?: undefined;
15
15
  '@nx/angular'?: undefined;
16
16
  '@nx/rspack'?: undefined;
17
- '@nx/angular-rspack'?: undefined;
18
17
  '@nx/express'?: undefined;
19
18
  '@nx/nest'?: undefined;
20
19
  '@nx/vue'?: undefined;
@@ -39,7 +38,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
39
38
  '@angular-devkit/core'?: undefined;
40
39
  '@nx/angular'?: undefined;
41
40
  '@nx/rspack'?: undefined;
42
- '@nx/angular-rspack'?: undefined;
43
41
  '@nx/express'?: undefined;
44
42
  '@nx/nest'?: undefined;
45
43
  '@nx/vue'?: undefined;
@@ -65,7 +63,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
65
63
  '@angular-devkit/core': string;
66
64
  '@nx/angular': any;
67
65
  '@nx/rspack': any;
68
- '@nx/angular-rspack': any;
69
66
  typescript: string;
70
67
  '@nx/express'?: undefined;
71
68
  '@nx/nest'?: undefined;
@@ -91,7 +88,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
91
88
  '@angular-devkit/core'?: undefined;
92
89
  '@nx/angular'?: undefined;
93
90
  '@nx/rspack'?: undefined;
94
- '@nx/angular-rspack'?: undefined;
95
91
  '@nx/express': any;
96
92
  typescript: string;
97
93
  '@nx/nest'?: undefined;
@@ -117,7 +113,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
117
113
  '@angular-devkit/core'?: undefined;
118
114
  '@nx/angular'?: undefined;
119
115
  '@nx/rspack'?: undefined;
120
- '@nx/angular-rspack'?: undefined;
121
116
  '@nx/express'?: undefined;
122
117
  '@nx/nest': any;
123
118
  typescript: string;
@@ -143,7 +138,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
143
138
  '@angular-devkit/core'?: undefined;
144
139
  '@nx/angular'?: undefined;
145
140
  '@nx/rspack'?: undefined;
146
- '@nx/angular-rspack'?: undefined;
147
141
  '@nx/express'?: undefined;
148
142
  '@nx/nest'?: undefined;
149
143
  typescript: string;
@@ -169,7 +163,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
169
163
  '@angular-devkit/core'?: undefined;
170
164
  '@nx/angular'?: undefined;
171
165
  '@nx/rspack'?: undefined;
172
- '@nx/angular-rspack'?: undefined;
173
166
  '@nx/express'?: undefined;
174
167
  '@nx/nest'?: undefined;
175
168
  '@nx/vue': any;
@@ -195,7 +188,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
195
188
  '@angular-devkit/core'?: undefined;
196
189
  '@nx/angular'?: undefined;
197
190
  '@nx/rspack'?: undefined;
198
- '@nx/angular-rspack'?: undefined;
199
191
  '@nx/express'?: undefined;
200
192
  '@nx/nest'?: undefined;
201
193
  '@nx/vue'?: undefined;
@@ -221,7 +213,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
221
213
  '@angular-devkit/core'?: undefined;
222
214
  '@nx/angular'?: undefined;
223
215
  '@nx/rspack'?: undefined;
224
- '@nx/angular-rspack'?: undefined;
225
216
  '@nx/express'?: undefined;
226
217
  '@nx/nest'?: undefined;
227
218
  '@nx/vue'?: undefined;
@@ -247,7 +238,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
247
238
  '@angular-devkit/core'?: undefined;
248
239
  '@nx/angular'?: undefined;
249
240
  '@nx/rspack'?: undefined;
250
- '@nx/angular-rspack'?: undefined;
251
241
  '@nx/express'?: undefined;
252
242
  '@nx/nest'?: undefined;
253
243
  '@nx/vue'?: undefined;
@@ -273,7 +263,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
273
263
  '@angular-devkit/core'?: undefined;
274
264
  '@nx/angular'?: undefined;
275
265
  '@nx/rspack'?: undefined;
276
- '@nx/angular-rspack'?: undefined;
277
266
  '@nx/express'?: undefined;
278
267
  '@nx/nest'?: undefined;
279
268
  '@nx/vue'?: undefined;
@@ -299,7 +288,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
299
288
  '@angular-devkit/core'?: undefined;
300
289
  '@nx/angular'?: undefined;
301
290
  '@nx/rspack'?: undefined;
302
- '@nx/angular-rspack'?: undefined;
303
291
  '@nx/express'?: undefined;
304
292
  '@nx/nest'?: undefined;
305
293
  '@nx/vue'?: undefined;
@@ -325,7 +313,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
325
313
  '@angular-devkit/core'?: undefined;
326
314
  '@nx/angular'?: undefined;
327
315
  '@nx/rspack'?: undefined;
328
- '@nx/angular-rspack'?: undefined;
329
316
  '@nx/express'?: undefined;
330
317
  '@nx/nest'?: undefined;
331
318
  '@nx/vue'?: undefined;
@@ -348,7 +335,6 @@ export declare function getPresetDependencies({ preset, presetVersion, bundler,
348
335
  '@angular-devkit/core'?: undefined;
349
336
  '@nx/angular'?: undefined;
350
337
  '@nx/rspack'?: undefined;
351
- '@nx/angular-rspack'?: undefined;
352
338
  '@nx/express'?: undefined;
353
339
  '@nx/nest'?: undefined;
354
340
  '@nx/vue'?: undefined;
@@ -16,9 +16,8 @@ function addPresetDependencies(host, options, presetDependencies) {
16
16
  const { dependencies, dev } = presetDependencies;
17
17
  return (0, devkit_1.addDependenciesToPackageJson)(host, dependencies, dev, (0, path_1.join)(options.directory, 'package.json'), true);
18
18
  }
19
- // Install scripts each preset dependency pulls in transitively. `nx new`
20
- // installs the preset dependencies before the preset generator runs, so the
21
- // generators that would otherwise record these decisions come too late.
19
+ // Bootstrap dependencies need build script decisions before generation.
20
+ // pnpm 10 also needs decisions for packages added during preset generation.
22
21
  const presetDependencyBuildScripts = {
23
22
  '@nx/angular-rspack': {
24
23
  // Its @nx/angular-rspack-compiler dependency patches `@angular/build`
@@ -59,6 +58,11 @@ function getPresetBuildScripts(options, { dependencies, dev }) {
59
58
  Object.assign(buildScripts, presetDependencyBuildScripts[pkg]);
60
59
  }
61
60
  }
61
+ if ((options.preset === presets_1.Preset.AngularMonorepo ||
62
+ options.preset === presets_1.Preset.AngularStandalone) &&
63
+ options.bundler === 'rspack') {
64
+ Object.assign(buildScripts, presetDependencyBuildScripts['@nx/angular-rspack']);
65
+ }
62
66
  // A third-party preset's install script is unvetted, and pnpm 10 does not run
63
67
  // it today, so deny it rather than opting in on pnpm 11.
64
68
  if (options.isCustomPreset) {
@@ -183,7 +187,6 @@ function getPresetDependencies({ preset, presetVersion, bundler, e2eTestRunner,
183
187
  '@angular-devkit/core': versions_1.angularCliVersion,
184
188
  '@nx/angular': versions_1.nxVersion,
185
189
  '@nx/rspack': bundler === 'rspack' ? versions_1.nxVersion : undefined,
186
- '@nx/angular-rspack': bundler === 'rspack' ? versions_1.nxVersion : undefined,
187
190
  typescript: versions_1.typescriptVersion,
188
191
  },
189
192
  };
@@ -13,7 +13,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
13
13
  '@angular-devkit/core'?: undefined;
14
14
  '@nx/angular'?: undefined;
15
15
  '@nx/rspack'?: undefined;
16
- '@nx/angular-rspack'?: undefined;
17
16
  '@nx/express'?: undefined;
18
17
  '@nx/nest'?: undefined;
19
18
  '@nx/vue'?: undefined;
@@ -38,7 +37,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
38
37
  '@angular-devkit/core'?: undefined;
39
38
  '@nx/angular'?: undefined;
40
39
  '@nx/rspack'?: undefined;
41
- '@nx/angular-rspack'?: undefined;
42
40
  '@nx/express'?: undefined;
43
41
  '@nx/nest'?: undefined;
44
42
  '@nx/vue'?: undefined;
@@ -64,7 +62,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
64
62
  '@angular-devkit/core': string;
65
63
  '@nx/angular': any;
66
64
  '@nx/rspack': any;
67
- '@nx/angular-rspack': any;
68
65
  typescript: string;
69
66
  '@nx/express'?: undefined;
70
67
  '@nx/nest'?: undefined;
@@ -90,7 +87,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
90
87
  '@angular-devkit/core'?: undefined;
91
88
  '@nx/angular'?: undefined;
92
89
  '@nx/rspack'?: undefined;
93
- '@nx/angular-rspack'?: undefined;
94
90
  '@nx/express': any;
95
91
  typescript: string;
96
92
  '@nx/nest'?: undefined;
@@ -116,7 +112,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
116
112
  '@angular-devkit/core'?: undefined;
117
113
  '@nx/angular'?: undefined;
118
114
  '@nx/rspack'?: undefined;
119
- '@nx/angular-rspack'?: undefined;
120
115
  '@nx/express'?: undefined;
121
116
  '@nx/nest': any;
122
117
  typescript: string;
@@ -142,7 +137,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
142
137
  '@angular-devkit/core'?: undefined;
143
138
  '@nx/angular'?: undefined;
144
139
  '@nx/rspack'?: undefined;
145
- '@nx/angular-rspack'?: undefined;
146
140
  '@nx/express'?: undefined;
147
141
  '@nx/nest'?: undefined;
148
142
  typescript: string;
@@ -168,7 +162,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
168
162
  '@angular-devkit/core'?: undefined;
169
163
  '@nx/angular'?: undefined;
170
164
  '@nx/rspack'?: undefined;
171
- '@nx/angular-rspack'?: undefined;
172
165
  '@nx/express'?: undefined;
173
166
  '@nx/nest'?: undefined;
174
167
  '@nx/vue': any;
@@ -194,7 +187,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
194
187
  '@angular-devkit/core'?: undefined;
195
188
  '@nx/angular'?: undefined;
196
189
  '@nx/rspack'?: undefined;
197
- '@nx/angular-rspack'?: undefined;
198
190
  '@nx/express'?: undefined;
199
191
  '@nx/nest'?: undefined;
200
192
  '@nx/vue'?: undefined;
@@ -220,7 +212,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
220
212
  '@angular-devkit/core'?: undefined;
221
213
  '@nx/angular'?: undefined;
222
214
  '@nx/rspack'?: undefined;
223
- '@nx/angular-rspack'?: undefined;
224
215
  '@nx/express'?: undefined;
225
216
  '@nx/nest'?: undefined;
226
217
  '@nx/vue'?: undefined;
@@ -246,7 +237,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
246
237
  '@angular-devkit/core'?: undefined;
247
238
  '@nx/angular'?: undefined;
248
239
  '@nx/rspack'?: undefined;
249
- '@nx/angular-rspack'?: undefined;
250
240
  '@nx/express'?: undefined;
251
241
  '@nx/nest'?: undefined;
252
242
  '@nx/vue'?: undefined;
@@ -272,7 +262,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
272
262
  '@angular-devkit/core'?: undefined;
273
263
  '@nx/angular'?: undefined;
274
264
  '@nx/rspack'?: undefined;
275
- '@nx/angular-rspack'?: undefined;
276
265
  '@nx/express'?: undefined;
277
266
  '@nx/nest'?: undefined;
278
267
  '@nx/vue'?: undefined;
@@ -298,7 +287,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
298
287
  '@angular-devkit/core'?: undefined;
299
288
  '@nx/angular'?: undefined;
300
289
  '@nx/rspack'?: undefined;
301
- '@nx/angular-rspack'?: undefined;
302
290
  '@nx/express'?: undefined;
303
291
  '@nx/nest'?: undefined;
304
292
  '@nx/vue'?: undefined;
@@ -324,7 +312,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
324
312
  '@angular-devkit/core'?: undefined;
325
313
  '@nx/angular'?: undefined;
326
314
  '@nx/rspack'?: undefined;
327
- '@nx/angular-rspack'?: undefined;
328
315
  '@nx/express'?: undefined;
329
316
  '@nx/nest'?: undefined;
330
317
  '@nx/vue'?: undefined;
@@ -347,7 +334,6 @@ export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSc
347
334
  '@angular-devkit/core'?: undefined;
348
335
  '@nx/angular'?: undefined;
349
336
  '@nx/rspack'?: undefined;
350
- '@nx/angular-rspack'?: undefined;
351
337
  '@nx/express'?: undefined;
352
338
  '@nx/nest'?: undefined;
353
339
  '@nx/vue'?: undefined;
@@ -120,11 +120,19 @@ async function generateWorkspaceFiles(tree, options) {
120
120
  if (!options.name) {
121
121
  throw new Error(`Invalid options, "name" is required.`);
122
122
  }
123
+ options = {
124
+ ...options,
125
+ packageManager: options.packageManager ?? (0, devkit_1.detectPackageManager)(tree.root),
126
+ };
123
127
  // we need to check package manager version before the package.json is generated
124
128
  // since it might influence the version report
125
129
  const packageManagerVersion = (0, devkit_1.getPackageManagerVersion)(options.packageManager, tree.root);
126
130
  options = normalizeOptions(options);
127
131
  createFiles(tree, options);
132
+ (0, devkit_1.updateJson)(tree, (0, path_1.join)(options.directory, 'package.json'), (json) => {
133
+ json.packageManager = `${options.packageManager}@${packageManagerVersion}`;
134
+ return json;
135
+ });
128
136
  const nxJson = createNxJson(tree, options);
129
137
  const token = options.nxCloud !== 'skip'
130
138
  ? await (0, internal_1.connectToNxCloud)(tree, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/workspace",
3
- "version": "24.0.0",
3
+ "version": "24.0.2",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "files": [
@@ -78,17 +78,17 @@
78
78
  }
79
79
  },
80
80
  "dependencies": {
81
- "@nx/devkit": "24.0.0",
81
+ "@nx/devkit": "24.0.2",
82
82
  "@zkochan/js-yaml": "0.0.7",
83
83
  "chalk": "^4.1.0",
84
84
  "picomatch": "4.0.4",
85
85
  "semver": "^7.6.3",
86
86
  "tslib": "^2.3.0",
87
87
  "yargs-parser": "21.1.1",
88
- "nx": "24.0.0"
88
+ "nx": "24.0.2"
89
89
  },
90
90
  "devDependencies": {
91
- "nx": "24.0.0"
91
+ "nx": "24.0.2"
92
92
  },
93
93
  "publishConfig": {
94
94
  "access": "public"