@nx/workspace 23.3.0-beta.2 → 23.3.0-beta.3

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,4 +1,372 @@
1
1
  import { Tree } from '@nx/devkit';
2
2
  import { NormalizedSchema } from './new';
3
- export declare function addPresetDependencies(host: Tree, options: NormalizedSchema): import("@nx/devkit").GeneratorCallback;
3
+ export type PresetDependencies = ReturnType<typeof getPresetDependencies>;
4
+ export declare function addPresetDependencies(host: Tree, options: NormalizedSchema, presetDependencies: PresetDependencies): import("@nx/devkit").GeneratorCallback;
5
+ export declare function getPresetBuildScripts(options: NormalizedSchema, { dependencies, dev }: PresetDependencies): Record<string, boolean>;
4
6
  export declare function generatePreset(host: Tree, opts: NormalizedSchema): Promise<void>;
7
+ export declare function getPresetDependencies({ preset, presetVersion, bundler, e2eTestRunner, js, }: NormalizedSchema): {
8
+ dependencies: {
9
+ '@nx/next'?: undefined;
10
+ };
11
+ dev: {
12
+ '@nx/js': any;
13
+ typescript: string;
14
+ '@angular-devkit/core'?: undefined;
15
+ '@nx/angular'?: undefined;
16
+ '@nx/rspack'?: undefined;
17
+ '@nx/angular-rspack'?: undefined;
18
+ '@nx/express'?: undefined;
19
+ '@nx/nest'?: undefined;
20
+ '@nx/vue'?: undefined;
21
+ '@nx/nuxt'?: undefined;
22
+ '@nx/react'?: undefined;
23
+ '@nx/cypress'?: undefined;
24
+ '@nx/playwright'?: undefined;
25
+ '@nx/jest'?: undefined;
26
+ '@nx/vite'?: undefined;
27
+ '@nx/react-native'?: undefined;
28
+ '@nx/expo'?: undefined;
29
+ '@nx/web'?: undefined;
30
+ '@nx/node'?: undefined;
31
+ '@nx/webpack'?: undefined;
32
+ };
33
+ } | {
34
+ dependencies: {
35
+ '@nx/next'?: undefined;
36
+ };
37
+ dev: {
38
+ '@nx/js': any;
39
+ '@angular-devkit/core'?: undefined;
40
+ '@nx/angular'?: undefined;
41
+ '@nx/rspack'?: undefined;
42
+ '@nx/angular-rspack'?: undefined;
43
+ '@nx/express'?: undefined;
44
+ '@nx/nest'?: undefined;
45
+ '@nx/vue'?: undefined;
46
+ '@nx/nuxt'?: undefined;
47
+ '@nx/react'?: undefined;
48
+ '@nx/cypress'?: undefined;
49
+ '@nx/playwright'?: undefined;
50
+ '@nx/jest'?: undefined;
51
+ '@nx/vite'?: undefined;
52
+ '@nx/react-native'?: undefined;
53
+ '@nx/expo'?: undefined;
54
+ '@nx/web'?: undefined;
55
+ '@nx/node'?: undefined;
56
+ '@nx/webpack'?: undefined;
57
+ typescript?: undefined;
58
+ };
59
+ } | {
60
+ dependencies: {
61
+ '@nx/next'?: undefined;
62
+ };
63
+ dev: {
64
+ '@nx/js'?: undefined;
65
+ '@angular-devkit/core': string;
66
+ '@nx/angular': any;
67
+ '@nx/rspack': any;
68
+ '@nx/angular-rspack': any;
69
+ typescript: string;
70
+ '@nx/express'?: undefined;
71
+ '@nx/nest'?: undefined;
72
+ '@nx/vue'?: undefined;
73
+ '@nx/nuxt'?: undefined;
74
+ '@nx/react'?: undefined;
75
+ '@nx/cypress'?: undefined;
76
+ '@nx/playwright'?: undefined;
77
+ '@nx/jest'?: undefined;
78
+ '@nx/vite'?: undefined;
79
+ '@nx/react-native'?: undefined;
80
+ '@nx/expo'?: undefined;
81
+ '@nx/web'?: undefined;
82
+ '@nx/node'?: undefined;
83
+ '@nx/webpack'?: undefined;
84
+ };
85
+ } | {
86
+ dependencies: {
87
+ '@nx/next'?: undefined;
88
+ };
89
+ dev: {
90
+ '@nx/js'?: undefined;
91
+ '@angular-devkit/core'?: undefined;
92
+ '@nx/angular'?: undefined;
93
+ '@nx/rspack'?: undefined;
94
+ '@nx/angular-rspack'?: undefined;
95
+ '@nx/express': any;
96
+ typescript: string;
97
+ '@nx/nest'?: undefined;
98
+ '@nx/vue'?: undefined;
99
+ '@nx/nuxt'?: undefined;
100
+ '@nx/react'?: undefined;
101
+ '@nx/cypress'?: undefined;
102
+ '@nx/playwright'?: undefined;
103
+ '@nx/jest'?: undefined;
104
+ '@nx/vite'?: undefined;
105
+ '@nx/react-native'?: undefined;
106
+ '@nx/expo'?: undefined;
107
+ '@nx/web'?: undefined;
108
+ '@nx/node'?: undefined;
109
+ '@nx/webpack'?: undefined;
110
+ };
111
+ } | {
112
+ dependencies: {
113
+ '@nx/next'?: undefined;
114
+ };
115
+ dev: {
116
+ '@nx/js'?: undefined;
117
+ '@angular-devkit/core'?: undefined;
118
+ '@nx/angular'?: undefined;
119
+ '@nx/rspack'?: undefined;
120
+ '@nx/angular-rspack'?: undefined;
121
+ '@nx/express'?: undefined;
122
+ '@nx/nest': any;
123
+ typescript: string;
124
+ '@nx/vue'?: undefined;
125
+ '@nx/nuxt'?: undefined;
126
+ '@nx/react'?: undefined;
127
+ '@nx/cypress'?: undefined;
128
+ '@nx/playwright'?: undefined;
129
+ '@nx/jest'?: undefined;
130
+ '@nx/vite'?: undefined;
131
+ '@nx/react-native'?: undefined;
132
+ '@nx/expo'?: undefined;
133
+ '@nx/web'?: undefined;
134
+ '@nx/node'?: undefined;
135
+ '@nx/webpack'?: undefined;
136
+ };
137
+ } | {
138
+ dependencies: {
139
+ '@nx/next': any;
140
+ };
141
+ dev: {
142
+ '@nx/js'?: undefined;
143
+ '@angular-devkit/core'?: undefined;
144
+ '@nx/angular'?: undefined;
145
+ '@nx/rspack'?: undefined;
146
+ '@nx/angular-rspack'?: undefined;
147
+ '@nx/express'?: undefined;
148
+ '@nx/nest'?: undefined;
149
+ typescript: string;
150
+ '@nx/vue'?: undefined;
151
+ '@nx/nuxt'?: undefined;
152
+ '@nx/react'?: undefined;
153
+ '@nx/cypress'?: undefined;
154
+ '@nx/playwright'?: undefined;
155
+ '@nx/jest'?: undefined;
156
+ '@nx/vite'?: undefined;
157
+ '@nx/react-native'?: undefined;
158
+ '@nx/expo'?: undefined;
159
+ '@nx/web'?: undefined;
160
+ '@nx/node'?: undefined;
161
+ '@nx/webpack'?: undefined;
162
+ };
163
+ } | {
164
+ dependencies: {
165
+ '@nx/next'?: undefined;
166
+ };
167
+ dev: {
168
+ '@nx/js'?: undefined;
169
+ '@angular-devkit/core'?: undefined;
170
+ '@nx/angular'?: undefined;
171
+ '@nx/rspack'?: undefined;
172
+ '@nx/angular-rspack'?: undefined;
173
+ '@nx/express'?: undefined;
174
+ '@nx/nest'?: undefined;
175
+ '@nx/vue': any;
176
+ '@nx/cypress': any;
177
+ '@nx/playwright': any;
178
+ '@nx/vite': any;
179
+ typescript: string;
180
+ '@nx/nuxt'?: undefined;
181
+ '@nx/react'?: undefined;
182
+ '@nx/jest'?: undefined;
183
+ '@nx/react-native'?: undefined;
184
+ '@nx/expo'?: undefined;
185
+ '@nx/web'?: undefined;
186
+ '@nx/node'?: undefined;
187
+ '@nx/webpack'?: undefined;
188
+ };
189
+ } | {
190
+ dependencies: {
191
+ '@nx/next'?: undefined;
192
+ };
193
+ dev: {
194
+ '@nx/js'?: undefined;
195
+ '@angular-devkit/core'?: undefined;
196
+ '@nx/angular'?: undefined;
197
+ '@nx/rspack'?: undefined;
198
+ '@nx/angular-rspack'?: undefined;
199
+ '@nx/express'?: undefined;
200
+ '@nx/nest'?: undefined;
201
+ '@nx/vue'?: undefined;
202
+ '@nx/nuxt': any;
203
+ '@nx/cypress': any;
204
+ '@nx/playwright': any;
205
+ typescript: string;
206
+ '@nx/react'?: undefined;
207
+ '@nx/jest'?: undefined;
208
+ '@nx/vite'?: undefined;
209
+ '@nx/react-native'?: undefined;
210
+ '@nx/expo'?: undefined;
211
+ '@nx/web'?: undefined;
212
+ '@nx/node'?: undefined;
213
+ '@nx/webpack'?: undefined;
214
+ };
215
+ } | {
216
+ dependencies: {
217
+ '@nx/next'?: undefined;
218
+ };
219
+ dev: {
220
+ '@nx/js'?: undefined;
221
+ '@angular-devkit/core'?: undefined;
222
+ '@nx/angular'?: undefined;
223
+ '@nx/rspack'?: undefined;
224
+ '@nx/angular-rspack'?: undefined;
225
+ '@nx/express'?: undefined;
226
+ '@nx/nest'?: undefined;
227
+ '@nx/vue'?: undefined;
228
+ '@nx/nuxt'?: undefined;
229
+ '@nx/react': any;
230
+ '@nx/cypress': any;
231
+ '@nx/playwright': any;
232
+ '@nx/jest': any;
233
+ '@nx/vite': any;
234
+ '@nx/webpack': any;
235
+ typescript: string;
236
+ '@nx/react-native'?: undefined;
237
+ '@nx/expo'?: undefined;
238
+ '@nx/web'?: undefined;
239
+ '@nx/node'?: undefined;
240
+ };
241
+ } | {
242
+ dependencies: {
243
+ '@nx/next'?: undefined;
244
+ };
245
+ dev: {
246
+ '@nx/js'?: undefined;
247
+ '@angular-devkit/core'?: undefined;
248
+ '@nx/angular'?: undefined;
249
+ '@nx/rspack'?: undefined;
250
+ '@nx/angular-rspack'?: undefined;
251
+ '@nx/express'?: undefined;
252
+ '@nx/nest'?: undefined;
253
+ '@nx/vue'?: undefined;
254
+ '@nx/nuxt'?: undefined;
255
+ '@nx/react'?: undefined;
256
+ '@nx/cypress'?: undefined;
257
+ '@nx/playwright'?: undefined;
258
+ '@nx/jest'?: undefined;
259
+ '@nx/vite'?: undefined;
260
+ '@nx/react-native': any;
261
+ typescript: string;
262
+ '@nx/expo'?: undefined;
263
+ '@nx/web'?: undefined;
264
+ '@nx/node'?: undefined;
265
+ '@nx/webpack'?: undefined;
266
+ };
267
+ } | {
268
+ dependencies: {
269
+ '@nx/next'?: undefined;
270
+ };
271
+ dev: {
272
+ '@nx/js'?: undefined;
273
+ '@angular-devkit/core'?: undefined;
274
+ '@nx/angular'?: undefined;
275
+ '@nx/rspack'?: undefined;
276
+ '@nx/angular-rspack'?: undefined;
277
+ '@nx/express'?: undefined;
278
+ '@nx/nest'?: undefined;
279
+ '@nx/vue'?: undefined;
280
+ '@nx/nuxt'?: undefined;
281
+ '@nx/react'?: undefined;
282
+ '@nx/cypress'?: undefined;
283
+ '@nx/playwright'?: undefined;
284
+ '@nx/jest'?: undefined;
285
+ '@nx/vite'?: undefined;
286
+ '@nx/react-native'?: undefined;
287
+ '@nx/expo': any;
288
+ typescript: string;
289
+ '@nx/web'?: undefined;
290
+ '@nx/node'?: undefined;
291
+ '@nx/webpack'?: undefined;
292
+ };
293
+ } | {
294
+ dependencies: {
295
+ '@nx/next'?: undefined;
296
+ };
297
+ dev: {
298
+ '@nx/js'?: undefined;
299
+ '@angular-devkit/core'?: undefined;
300
+ '@nx/angular'?: undefined;
301
+ '@nx/rspack'?: undefined;
302
+ '@nx/angular-rspack'?: undefined;
303
+ '@nx/express'?: undefined;
304
+ '@nx/nest'?: undefined;
305
+ '@nx/vue'?: undefined;
306
+ '@nx/nuxt'?: undefined;
307
+ '@nx/react'?: undefined;
308
+ '@nx/cypress'?: undefined;
309
+ '@nx/playwright'?: undefined;
310
+ '@nx/jest'?: undefined;
311
+ '@nx/vite'?: undefined;
312
+ '@nx/react-native'?: undefined;
313
+ '@nx/expo'?: undefined;
314
+ '@nx/web': any;
315
+ typescript: string;
316
+ '@nx/node'?: undefined;
317
+ '@nx/webpack'?: undefined;
318
+ };
319
+ } | {
320
+ dependencies: {
321
+ '@nx/next'?: undefined;
322
+ };
323
+ dev: {
324
+ '@nx/js'?: undefined;
325
+ '@angular-devkit/core'?: undefined;
326
+ '@nx/angular'?: undefined;
327
+ '@nx/rspack'?: undefined;
328
+ '@nx/angular-rspack'?: undefined;
329
+ '@nx/express'?: undefined;
330
+ '@nx/nest'?: undefined;
331
+ '@nx/vue'?: undefined;
332
+ '@nx/nuxt'?: undefined;
333
+ '@nx/react'?: undefined;
334
+ '@nx/cypress'?: undefined;
335
+ '@nx/playwright'?: undefined;
336
+ '@nx/jest'?: undefined;
337
+ '@nx/vite'?: undefined;
338
+ '@nx/react-native'?: undefined;
339
+ '@nx/expo'?: undefined;
340
+ '@nx/web'?: undefined;
341
+ '@nx/node': any;
342
+ '@nx/webpack': any;
343
+ typescript: string;
344
+ };
345
+ } | {
346
+ dev: {
347
+ '@nx/js'?: undefined;
348
+ '@angular-devkit/core'?: undefined;
349
+ '@nx/angular'?: undefined;
350
+ '@nx/rspack'?: undefined;
351
+ '@nx/angular-rspack'?: undefined;
352
+ '@nx/express'?: undefined;
353
+ '@nx/nest'?: undefined;
354
+ '@nx/vue'?: undefined;
355
+ '@nx/nuxt'?: undefined;
356
+ '@nx/react'?: undefined;
357
+ '@nx/cypress'?: undefined;
358
+ '@nx/playwright'?: undefined;
359
+ '@nx/jest'?: undefined;
360
+ '@nx/vite'?: undefined;
361
+ '@nx/react-native'?: undefined;
362
+ '@nx/expo'?: undefined;
363
+ '@nx/web'?: undefined;
364
+ '@nx/node'?: undefined;
365
+ '@nx/webpack'?: undefined;
366
+ typescript?: undefined;
367
+ };
368
+ dependencies: {
369
+ [preset]: string;
370
+ '@nx/next'?: undefined;
371
+ };
372
+ };
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addPresetDependencies = addPresetDependencies;
4
+ exports.getPresetBuildScripts = getPresetBuildScripts;
4
5
  exports.generatePreset = generatePreset;
6
+ exports.getPresetDependencies = getPresetDependencies;
5
7
  const tslib_1 = require("tslib");
6
8
  const devkit_1 = require("@nx/devkit");
7
9
  const presets_1 = require("../utils/presets");
@@ -11,10 +13,60 @@ const path_1 = require("path");
11
13
  const yargs_parser_1 = tslib_1.__importDefault(require("yargs-parser"));
12
14
  const child_process_1 = require("child_process");
13
15
  const internal_1 = require("@nx/devkit/internal");
14
- function addPresetDependencies(host, options) {
15
- const { dependencies, dev } = getPresetDependencies(options);
16
+ function addPresetDependencies(host, options, presetDependencies) {
17
+ const { dependencies, dev } = presetDependencies;
16
18
  return (0, devkit_1.addDependenciesToPackageJson)(host, dependencies, dev, (0, path_1.join)(options.directory, 'package.json'), true);
17
19
  }
20
+ // Install scripts each preset dependency pulls in transitively. `nx new`
21
+ // installs the preset dependencies before the preset generator runs, so the
22
+ // generators that would otherwise record these decisions come too late.
23
+ const presetDependencyBuildScripts = {
24
+ '@nx/angular-rspack': {
25
+ // Its @nx/angular-rspack-compiler dependency patches `@angular/build`
26
+ // versions below 20.2.0, so that one has to run. The rest come from the
27
+ // compiler's `@angular/build` and `@rsbuild/core` peers.
28
+ '@nx/angular-rspack-compiler': true,
29
+ 'core-js': false,
30
+ esbuild: false,
31
+ lmdb: false,
32
+ 'msgpackr-extract': false,
33
+ '@parcel/watcher': false,
34
+ },
35
+ // @nx/express and @nx/nest depend on @nx/node, which depends on @nx/jest.
36
+ // Its jest-resolve range floats, so it lands on jest 30.5 or later, which
37
+ // brings unrs-resolver and, through jest-haste-map, @parcel/watcher.
38
+ '@nx/express': { '@parcel/watcher': false, 'unrs-resolver': false },
39
+ '@nx/jest': { '@parcel/watcher': false, 'unrs-resolver': false },
40
+ '@nx/nest': { '@parcel/watcher': false, 'unrs-resolver': false },
41
+ '@nx/node': { '@parcel/watcher': false, 'unrs-resolver': false },
42
+ // Both optionally depend on @nx/detox, which depends on @nx/jest. pnpm
43
+ // installs optionalDependencies by default.
44
+ '@nx/expo': { '@parcel/watcher': false, 'unrs-resolver': false },
45
+ '@nx/react-native': { '@parcel/watcher': false, 'unrs-resolver': false },
46
+ // Both depend on sass, which pulls in @parcel/watcher.
47
+ '@nx/rspack': { '@parcel/watcher': false },
48
+ '@nx/webpack': { '@parcel/watcher': false },
49
+ };
50
+ function getPresetBuildScripts(options, { dependencies, dev }) {
51
+ // The conditional entries are keyed unconditionally and left `undefined` when
52
+ // they don't apply, so the version is what says a package gets installed.
53
+ const declared = {
54
+ ...dependencies,
55
+ ...dev,
56
+ };
57
+ const buildScripts = {};
58
+ for (const pkg of Object.keys(declared)) {
59
+ if (declared[pkg]) {
60
+ Object.assign(buildScripts, presetDependencyBuildScripts[pkg]);
61
+ }
62
+ }
63
+ // A third-party preset's install script is unvetted, and pnpm 10 does not run
64
+ // it today, so deny it rather than opting in on pnpm 11.
65
+ if (options.isCustomPreset) {
66
+ buildScripts[options.preset] = false;
67
+ }
68
+ return buildScripts;
69
+ }
18
70
  function generatePreset(host, opts) {
19
71
  const parsedArgs = (0, yargs_parser_1.default)(process.argv, {
20
72
  boolean: ['interactive'],
@@ -3,4 +3,370 @@ import type { NormalizedSchema } from './new';
3
3
  export declare function generateWorkspaceFiles(tree: Tree, options: NormalizedSchema): Promise<{
4
4
  token: string;
5
5
  aiAgentsCallback: () => unknown | undefined;
6
+ presetDependencies: {
7
+ dependencies: {
8
+ '@nx/next'?: undefined;
9
+ };
10
+ dev: {
11
+ '@nx/js': any;
12
+ typescript: string;
13
+ '@angular-devkit/core'?: undefined;
14
+ '@nx/angular'?: undefined;
15
+ '@nx/rspack'?: undefined;
16
+ '@nx/angular-rspack'?: undefined;
17
+ '@nx/express'?: undefined;
18
+ '@nx/nest'?: undefined;
19
+ '@nx/vue'?: undefined;
20
+ '@nx/nuxt'?: undefined;
21
+ '@nx/react'?: undefined;
22
+ '@nx/cypress'?: undefined;
23
+ '@nx/playwright'?: undefined;
24
+ '@nx/jest'?: undefined;
25
+ '@nx/vite'?: undefined;
26
+ '@nx/react-native'?: undefined;
27
+ '@nx/expo'?: undefined;
28
+ '@nx/web'?: undefined;
29
+ '@nx/node'?: undefined;
30
+ '@nx/webpack'?: undefined;
31
+ };
32
+ } | {
33
+ dependencies: {
34
+ '@nx/next'?: undefined;
35
+ };
36
+ dev: {
37
+ '@nx/js': any;
38
+ '@angular-devkit/core'?: undefined;
39
+ '@nx/angular'?: undefined;
40
+ '@nx/rspack'?: undefined;
41
+ '@nx/angular-rspack'?: undefined;
42
+ '@nx/express'?: undefined;
43
+ '@nx/nest'?: undefined;
44
+ '@nx/vue'?: undefined;
45
+ '@nx/nuxt'?: undefined;
46
+ '@nx/react'?: undefined;
47
+ '@nx/cypress'?: undefined;
48
+ '@nx/playwright'?: undefined;
49
+ '@nx/jest'?: undefined;
50
+ '@nx/vite'?: undefined;
51
+ '@nx/react-native'?: undefined;
52
+ '@nx/expo'?: undefined;
53
+ '@nx/web'?: undefined;
54
+ '@nx/node'?: undefined;
55
+ '@nx/webpack'?: undefined;
56
+ typescript?: undefined;
57
+ };
58
+ } | {
59
+ dependencies: {
60
+ '@nx/next'?: undefined;
61
+ };
62
+ dev: {
63
+ '@nx/js'?: undefined;
64
+ '@angular-devkit/core': string;
65
+ '@nx/angular': any;
66
+ '@nx/rspack': any;
67
+ '@nx/angular-rspack': any;
68
+ typescript: string;
69
+ '@nx/express'?: undefined;
70
+ '@nx/nest'?: undefined;
71
+ '@nx/vue'?: undefined;
72
+ '@nx/nuxt'?: undefined;
73
+ '@nx/react'?: undefined;
74
+ '@nx/cypress'?: undefined;
75
+ '@nx/playwright'?: undefined;
76
+ '@nx/jest'?: undefined;
77
+ '@nx/vite'?: undefined;
78
+ '@nx/react-native'?: undefined;
79
+ '@nx/expo'?: undefined;
80
+ '@nx/web'?: undefined;
81
+ '@nx/node'?: undefined;
82
+ '@nx/webpack'?: undefined;
83
+ };
84
+ } | {
85
+ dependencies: {
86
+ '@nx/next'?: undefined;
87
+ };
88
+ dev: {
89
+ '@nx/js'?: undefined;
90
+ '@angular-devkit/core'?: undefined;
91
+ '@nx/angular'?: undefined;
92
+ '@nx/rspack'?: undefined;
93
+ '@nx/angular-rspack'?: undefined;
94
+ '@nx/express': any;
95
+ typescript: string;
96
+ '@nx/nest'?: undefined;
97
+ '@nx/vue'?: undefined;
98
+ '@nx/nuxt'?: undefined;
99
+ '@nx/react'?: undefined;
100
+ '@nx/cypress'?: undefined;
101
+ '@nx/playwright'?: undefined;
102
+ '@nx/jest'?: undefined;
103
+ '@nx/vite'?: undefined;
104
+ '@nx/react-native'?: undefined;
105
+ '@nx/expo'?: undefined;
106
+ '@nx/web'?: undefined;
107
+ '@nx/node'?: undefined;
108
+ '@nx/webpack'?: undefined;
109
+ };
110
+ } | {
111
+ dependencies: {
112
+ '@nx/next'?: undefined;
113
+ };
114
+ dev: {
115
+ '@nx/js'?: undefined;
116
+ '@angular-devkit/core'?: undefined;
117
+ '@nx/angular'?: undefined;
118
+ '@nx/rspack'?: undefined;
119
+ '@nx/angular-rspack'?: undefined;
120
+ '@nx/express'?: undefined;
121
+ '@nx/nest': any;
122
+ typescript: string;
123
+ '@nx/vue'?: undefined;
124
+ '@nx/nuxt'?: undefined;
125
+ '@nx/react'?: undefined;
126
+ '@nx/cypress'?: undefined;
127
+ '@nx/playwright'?: undefined;
128
+ '@nx/jest'?: undefined;
129
+ '@nx/vite'?: undefined;
130
+ '@nx/react-native'?: undefined;
131
+ '@nx/expo'?: undefined;
132
+ '@nx/web'?: undefined;
133
+ '@nx/node'?: undefined;
134
+ '@nx/webpack'?: undefined;
135
+ };
136
+ } | {
137
+ dependencies: {
138
+ '@nx/next': any;
139
+ };
140
+ dev: {
141
+ '@nx/js'?: undefined;
142
+ '@angular-devkit/core'?: undefined;
143
+ '@nx/angular'?: undefined;
144
+ '@nx/rspack'?: undefined;
145
+ '@nx/angular-rspack'?: undefined;
146
+ '@nx/express'?: undefined;
147
+ '@nx/nest'?: undefined;
148
+ typescript: string;
149
+ '@nx/vue'?: undefined;
150
+ '@nx/nuxt'?: undefined;
151
+ '@nx/react'?: undefined;
152
+ '@nx/cypress'?: undefined;
153
+ '@nx/playwright'?: undefined;
154
+ '@nx/jest'?: undefined;
155
+ '@nx/vite'?: undefined;
156
+ '@nx/react-native'?: undefined;
157
+ '@nx/expo'?: undefined;
158
+ '@nx/web'?: undefined;
159
+ '@nx/node'?: undefined;
160
+ '@nx/webpack'?: undefined;
161
+ };
162
+ } | {
163
+ dependencies: {
164
+ '@nx/next'?: undefined;
165
+ };
166
+ dev: {
167
+ '@nx/js'?: undefined;
168
+ '@angular-devkit/core'?: undefined;
169
+ '@nx/angular'?: undefined;
170
+ '@nx/rspack'?: undefined;
171
+ '@nx/angular-rspack'?: undefined;
172
+ '@nx/express'?: undefined;
173
+ '@nx/nest'?: undefined;
174
+ '@nx/vue': any;
175
+ '@nx/cypress': any;
176
+ '@nx/playwright': any;
177
+ '@nx/vite': any;
178
+ typescript: string;
179
+ '@nx/nuxt'?: undefined;
180
+ '@nx/react'?: undefined;
181
+ '@nx/jest'?: undefined;
182
+ '@nx/react-native'?: undefined;
183
+ '@nx/expo'?: undefined;
184
+ '@nx/web'?: undefined;
185
+ '@nx/node'?: undefined;
186
+ '@nx/webpack'?: undefined;
187
+ };
188
+ } | {
189
+ dependencies: {
190
+ '@nx/next'?: undefined;
191
+ };
192
+ dev: {
193
+ '@nx/js'?: undefined;
194
+ '@angular-devkit/core'?: undefined;
195
+ '@nx/angular'?: undefined;
196
+ '@nx/rspack'?: undefined;
197
+ '@nx/angular-rspack'?: undefined;
198
+ '@nx/express'?: undefined;
199
+ '@nx/nest'?: undefined;
200
+ '@nx/vue'?: undefined;
201
+ '@nx/nuxt': any;
202
+ '@nx/cypress': any;
203
+ '@nx/playwright': any;
204
+ typescript: string;
205
+ '@nx/react'?: undefined;
206
+ '@nx/jest'?: undefined;
207
+ '@nx/vite'?: undefined;
208
+ '@nx/react-native'?: undefined;
209
+ '@nx/expo'?: undefined;
210
+ '@nx/web'?: undefined;
211
+ '@nx/node'?: undefined;
212
+ '@nx/webpack'?: undefined;
213
+ };
214
+ } | {
215
+ dependencies: {
216
+ '@nx/next'?: undefined;
217
+ };
218
+ dev: {
219
+ '@nx/js'?: undefined;
220
+ '@angular-devkit/core'?: undefined;
221
+ '@nx/angular'?: undefined;
222
+ '@nx/rspack'?: undefined;
223
+ '@nx/angular-rspack'?: undefined;
224
+ '@nx/express'?: undefined;
225
+ '@nx/nest'?: undefined;
226
+ '@nx/vue'?: undefined;
227
+ '@nx/nuxt'?: undefined;
228
+ '@nx/react': any;
229
+ '@nx/cypress': any;
230
+ '@nx/playwright': any;
231
+ '@nx/jest': any;
232
+ '@nx/vite': any;
233
+ '@nx/webpack': any;
234
+ typescript: string;
235
+ '@nx/react-native'?: undefined;
236
+ '@nx/expo'?: undefined;
237
+ '@nx/web'?: undefined;
238
+ '@nx/node'?: undefined;
239
+ };
240
+ } | {
241
+ dependencies: {
242
+ '@nx/next'?: undefined;
243
+ };
244
+ dev: {
245
+ '@nx/js'?: undefined;
246
+ '@angular-devkit/core'?: undefined;
247
+ '@nx/angular'?: undefined;
248
+ '@nx/rspack'?: undefined;
249
+ '@nx/angular-rspack'?: undefined;
250
+ '@nx/express'?: undefined;
251
+ '@nx/nest'?: undefined;
252
+ '@nx/vue'?: undefined;
253
+ '@nx/nuxt'?: undefined;
254
+ '@nx/react'?: undefined;
255
+ '@nx/cypress'?: undefined;
256
+ '@nx/playwright'?: undefined;
257
+ '@nx/jest'?: undefined;
258
+ '@nx/vite'?: undefined;
259
+ '@nx/react-native': any;
260
+ typescript: string;
261
+ '@nx/expo'?: undefined;
262
+ '@nx/web'?: undefined;
263
+ '@nx/node'?: undefined;
264
+ '@nx/webpack'?: undefined;
265
+ };
266
+ } | {
267
+ dependencies: {
268
+ '@nx/next'?: undefined;
269
+ };
270
+ dev: {
271
+ '@nx/js'?: undefined;
272
+ '@angular-devkit/core'?: undefined;
273
+ '@nx/angular'?: undefined;
274
+ '@nx/rspack'?: undefined;
275
+ '@nx/angular-rspack'?: undefined;
276
+ '@nx/express'?: undefined;
277
+ '@nx/nest'?: undefined;
278
+ '@nx/vue'?: undefined;
279
+ '@nx/nuxt'?: undefined;
280
+ '@nx/react'?: undefined;
281
+ '@nx/cypress'?: undefined;
282
+ '@nx/playwright'?: undefined;
283
+ '@nx/jest'?: undefined;
284
+ '@nx/vite'?: undefined;
285
+ '@nx/react-native'?: undefined;
286
+ '@nx/expo': any;
287
+ typescript: string;
288
+ '@nx/web'?: undefined;
289
+ '@nx/node'?: undefined;
290
+ '@nx/webpack'?: undefined;
291
+ };
292
+ } | {
293
+ dependencies: {
294
+ '@nx/next'?: undefined;
295
+ };
296
+ dev: {
297
+ '@nx/js'?: undefined;
298
+ '@angular-devkit/core'?: undefined;
299
+ '@nx/angular'?: undefined;
300
+ '@nx/rspack'?: undefined;
301
+ '@nx/angular-rspack'?: undefined;
302
+ '@nx/express'?: undefined;
303
+ '@nx/nest'?: undefined;
304
+ '@nx/vue'?: undefined;
305
+ '@nx/nuxt'?: undefined;
306
+ '@nx/react'?: undefined;
307
+ '@nx/cypress'?: undefined;
308
+ '@nx/playwright'?: undefined;
309
+ '@nx/jest'?: undefined;
310
+ '@nx/vite'?: undefined;
311
+ '@nx/react-native'?: undefined;
312
+ '@nx/expo'?: undefined;
313
+ '@nx/web': any;
314
+ typescript: string;
315
+ '@nx/node'?: undefined;
316
+ '@nx/webpack'?: undefined;
317
+ };
318
+ } | {
319
+ dependencies: {
320
+ '@nx/next'?: undefined;
321
+ };
322
+ dev: {
323
+ '@nx/js'?: undefined;
324
+ '@angular-devkit/core'?: undefined;
325
+ '@nx/angular'?: undefined;
326
+ '@nx/rspack'?: undefined;
327
+ '@nx/angular-rspack'?: undefined;
328
+ '@nx/express'?: undefined;
329
+ '@nx/nest'?: undefined;
330
+ '@nx/vue'?: undefined;
331
+ '@nx/nuxt'?: undefined;
332
+ '@nx/react'?: undefined;
333
+ '@nx/cypress'?: undefined;
334
+ '@nx/playwright'?: undefined;
335
+ '@nx/jest'?: undefined;
336
+ '@nx/vite'?: undefined;
337
+ '@nx/react-native'?: undefined;
338
+ '@nx/expo'?: undefined;
339
+ '@nx/web'?: undefined;
340
+ '@nx/node': any;
341
+ '@nx/webpack': any;
342
+ typescript: string;
343
+ };
344
+ } | {
345
+ dev: {
346
+ '@nx/js'?: undefined;
347
+ '@angular-devkit/core'?: undefined;
348
+ '@nx/angular'?: undefined;
349
+ '@nx/rspack'?: undefined;
350
+ '@nx/angular-rspack'?: undefined;
351
+ '@nx/express'?: undefined;
352
+ '@nx/nest'?: undefined;
353
+ '@nx/vue'?: undefined;
354
+ '@nx/nuxt'?: undefined;
355
+ '@nx/react'?: undefined;
356
+ '@nx/cypress'?: undefined;
357
+ '@nx/playwright'?: undefined;
358
+ '@nx/jest'?: undefined;
359
+ '@nx/vite'?: undefined;
360
+ '@nx/react-native'?: undefined;
361
+ '@nx/expo'?: undefined;
362
+ '@nx/web'?: undefined;
363
+ '@nx/node'?: undefined;
364
+ '@nx/webpack'?: undefined;
365
+ typescript?: undefined;
366
+ };
367
+ dependencies: {
368
+ [x: string]: string;
369
+ '@nx/next'?: undefined;
370
+ };
371
+ };
6
372
  }>;
@@ -3,11 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateWorkspaceFiles = generateWorkspaceFiles;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const internal_1 = require("@nx/devkit/internal");
6
+ const js_yaml_1 = require("@zkochan/js-yaml");
6
7
  const path_1 = require("path");
7
8
  const semver_1 = require("semver");
8
9
  const default_base_1 = require("../../utilities/default-base");
9
10
  const versions_1 = require("../../utils/versions");
10
11
  const presets_1 = require("../utils/presets");
12
+ const generate_preset_1 = require("./generate-preset");
11
13
  // map from the preset to the name of the plugin s.t. the README can have a more
12
14
  // meaningful generator command.
13
15
  const presetToPluginMap = {
@@ -141,10 +143,13 @@ async function generateWorkspaceFiles(tree, options) {
141
143
  agents: [...options.aiAgents],
142
144
  });
143
145
  }
146
+ // Resolving a custom preset's version costs a registry round trip, so this
147
+ // is computed once and handed back for `addPresetDependencies` to reuse.
148
+ const presetDependencies = (0, generate_preset_1.getPresetDependencies)(options);
144
149
  const [packageMajor] = packageManagerVersion.split('.');
145
150
  if (options.packageManager === 'pnpm' && +packageMajor >= 7) {
146
151
  if ((0, semver_1.gte)(packageManagerVersion, '10.6.0')) {
147
- addPnpmSettings(tree, options, packageManagerVersion);
152
+ addPnpmSettings(tree, options, packageManagerVersion, presetDependencies);
148
153
  }
149
154
  else {
150
155
  createNpmrc(tree, options);
@@ -160,7 +165,7 @@ async function generateWorkspaceFiles(tree, options) {
160
165
  setPresetProperty(tree, options);
161
166
  addNpmScripts(tree, options);
162
167
  setUpWorkspacesInPackageJson(tree, options);
163
- return { token, aiAgentsCallback };
168
+ return { token, aiAgentsCallback, presetDependencies };
164
169
  }
165
170
  function setPresetProperty(tree, options) {
166
171
  if (options.preset === presets_1.Preset.NPM) {
@@ -262,11 +267,19 @@ async function createReadme(tree, { name, appName, directory, preset, nxCloud, w
262
267
  nxCloudOnboardingUrl,
263
268
  });
264
269
  }
265
- function addPnpmSettings(tree, options, packageManagerVersion) {
270
+ function addPnpmSettings(tree, options, packageManagerVersion, presetDependencies) {
271
+ const buildScripts = {
272
+ nx: true,
273
+ ...(0, generate_preset_1.getPresetBuildScripts)(options, presetDependencies),
274
+ };
275
+ // pnpm 10 skips an undecided script instead of erroring, and only 10.26 and
276
+ // later read `allowBuilds`, so the allow-list form covers all of pnpm 10.
266
277
  const buildAllowlist = (0, semver_1.gte)(packageManagerVersion, '11.0.0')
267
- ? `allowBuilds:\n nx: true`
268
- : `onlyBuiltDependencies:\n - nx`;
269
- tree.write((0, path_1.join)(options.directory, 'pnpm-workspace.yaml'), `autoInstallPeers: true\n${buildAllowlist}\n`);
278
+ ? { allowBuilds: buildScripts }
279
+ : {
280
+ onlyBuiltDependencies: Object.keys(buildScripts).filter((pkg) => buildScripts[pkg]),
281
+ };
282
+ tree.write((0, path_1.join)(options.directory, 'pnpm-workspace.yaml'), (0, js_yaml_1.dump)({ autoInstallPeers: true, ...buildAllowlist }));
270
283
  }
271
284
  function createNpmrc(tree, options) {
272
285
  tree.write((0, path_1.join)(options.directory, '.npmrc'), 'strict-peer-dependencies=false\nauto-install-peers=true\n');
@@ -10,9 +10,9 @@ const child_process_1 = require("child_process");
10
10
  async function newGenerator(tree, opts) {
11
11
  const options = normalizeOptions(opts);
12
12
  validateOptions(options, tree);
13
- const { token, aiAgentsCallback } = await (0, generate_workspace_files_1.generateWorkspaceFiles)(tree, options);
13
+ const { token, aiAgentsCallback, presetDependencies } = await (0, generate_workspace_files_1.generateWorkspaceFiles)(tree, options);
14
14
  options.nxCloudToken = token;
15
- (0, generate_preset_1.addPresetDependencies)(tree, options);
15
+ (0, generate_preset_1.addPresetDependencies)(tree, options, presetDependencies);
16
16
  await (0, devkit_1.formatFiles)(tree);
17
17
  return async () => {
18
18
  if (!options.skipInstall) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/workspace",
3
- "version": "23.3.0-beta.2",
3
+ "version": "23.3.0-beta.3",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "files": [
@@ -84,11 +84,11 @@
84
84
  "semver": "^7.6.3",
85
85
  "tslib": "^2.3.0",
86
86
  "yargs-parser": "21.1.1",
87
- "nx": "23.3.0-beta.2",
88
- "@nx/devkit": "23.3.0-beta.2"
87
+ "nx": "23.3.0-beta.3",
88
+ "@nx/devkit": "23.3.0-beta.3"
89
89
  },
90
90
  "devDependencies": {
91
- "nx": "23.3.0-beta.2"
91
+ "nx": "23.3.0-beta.3"
92
92
  },
93
93
  "publishConfig": {
94
94
  "access": "public"