@nx/workspace 17.0.2 → 17.0.4
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/LICENSE +1 -1
- package/README.md +9 -4
- package/migrations.json +37 -0
- package/package.json +4 -4
- package/src/generators/ci-workflow/ci-workflow.d.ts +1 -1
- package/src/generators/ci-workflow/ci-workflow.js +30 -18
- package/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ +31 -33
- package/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ +34 -29
- package/src/generators/ci-workflow/files/circleci/.circleci/config.yml__tmpl__ +17 -53
- package/src/generators/ci-workflow/files/github/.github/workflows/__workflowFileName__.yml__tmpl__ +26 -19
- package/src/generators/ci-workflow/files/gitlab/.gitlab-ci.yml__tmpl__ +12 -35
- package/src/generators/ci-workflow/schema.json +1 -1
- package/src/generators/convert-to-monorepo/convert-to-monorepo.js +6 -2
- package/src/generators/convert-to-monorepo/schema.json +1 -1
- package/src/generators/convert-to-nx-project/schema.json +1 -1
- package/src/generators/move/lib/create-project-configuration-in-new-destination.js +7 -2
- package/src/generators/move/lib/extract-base-configs.d.ts +1 -1
- package/src/generators/move/lib/extract-base-configs.js +4 -10
- package/src/generators/move/lib/move-project-files.js +4 -4
- package/src/generators/move/lib/normalize-schema.d.ts +1 -1
- package/src/generators/move/lib/normalize-schema.js +86 -79
- package/src/generators/move/lib/update-imports.js +1 -1
- package/src/generators/move/lib/update-jest-config.js +5 -3
- package/src/generators/move/lib/update-project-root-files.js +2 -2
- package/src/generators/move/move.js +4 -1
- package/src/generators/move/schema.json +1 -1
- package/src/generators/new/files-readme/README.md.template +49 -23
- package/src/generators/new/files-root-app/package.json__tmpl__ +3 -0
- package/src/generators/new/generate-preset.js +16 -0
- package/src/generators/new/generate-workspace-files.js +36 -23
- package/src/generators/new/new.d.ts +3 -0
- package/src/generators/new/new.js +9 -7
- package/src/generators/new/schema.json +15 -1
- package/src/generators/npm-package/schema.json +1 -1
- package/src/generators/preset/preset.js +84 -0
- package/src/generators/preset/schema.d.ts +3 -0
- package/src/generators/preset/schema.json +17 -3
- package/src/generators/remove/lib/update-jest-config.js +18 -6
- package/src/generators/remove/schema.json +1 -1
- package/src/generators/run-commands/schema.json +1 -1
- package/src/generators/utils/jest-config.d.ts +2 -0
- package/src/generators/utils/jest-config.js +13 -0
- package/src/generators/utils/presets.d.ts +4 -0
- package/src/generators/utils/presets.js +5 -1
- package/src/utils/output.js +1 -1
- package/src/utils/versions.d.ts +2 -2
- package/src/utils/versions.js +2 -2
|
@@ -13,14 +13,16 @@ async function newGenerator(tree, opts) {
|
|
|
13
13
|
await (0, generate_workspace_files_1.generateWorkspaceFiles)(tree, { ...options, nxCloud: undefined });
|
|
14
14
|
(0, generate_preset_1.addPresetDependencies)(tree, options);
|
|
15
15
|
return async () => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
if (!options.skipInstall) {
|
|
17
|
+
const pmc = (0, devkit_1.getPackageManagerCommand)(options.packageManager);
|
|
18
|
+
if (pmc.preInstall) {
|
|
19
|
+
(0, child_process_1.execSync)(pmc.preInstall, {
|
|
20
|
+
cwd: (0, devkit_1.joinPathFragments)(tree.root, options.directory),
|
|
21
|
+
stdio: process.env.NX_GENERATE_QUIET === 'true' ? 'ignore' : 'inherit',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
(0, devkit_1.installPackagesTask)(tree, false, options.directory, options.packageManager);
|
|
22
25
|
}
|
|
23
|
-
(0, devkit_1.installPackagesTask)(tree, false, options.directory, options.packageManager);
|
|
24
26
|
// TODO: move all of these into create-nx-workspace
|
|
25
27
|
if (options.preset !== presets_1.Preset.NPM && !options.isCustomPreset) {
|
|
26
28
|
await (0, generate_preset_1.generatePreset)(tree, options);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "NxWorkspaceNew",
|
|
4
4
|
"title": "Create an empty workspace",
|
|
5
5
|
"description": "Create an empty workspace.",
|
|
@@ -68,10 +68,24 @@
|
|
|
68
68
|
"type": "boolean",
|
|
69
69
|
"default": true
|
|
70
70
|
},
|
|
71
|
+
"nextSrcDir": {
|
|
72
|
+
"description": "Generate a `src` directory for this project.",
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"default": true
|
|
75
|
+
},
|
|
71
76
|
"e2eTestRunner": {
|
|
72
77
|
"description": "The tool to use for running e2e tests.",
|
|
73
78
|
"type": "string",
|
|
74
79
|
"enum": ["cypress", "playwright", "jest", "detox", "none"]
|
|
80
|
+
},
|
|
81
|
+
"ssr": {
|
|
82
|
+
"description": "Enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) for the Angular application.",
|
|
83
|
+
"type": "boolean",
|
|
84
|
+
"default": false
|
|
85
|
+
},
|
|
86
|
+
"prefix": {
|
|
87
|
+
"description": "The prefix to use for Angular component and directive selectors.",
|
|
88
|
+
"type": "string"
|
|
75
89
|
}
|
|
76
90
|
},
|
|
77
91
|
"additionalProperties": true
|
|
@@ -16,6 +16,10 @@ async function presetGenerator(tree, options) {
|
|
|
16
16
|
exports.presetGenerator = presetGenerator;
|
|
17
17
|
exports.default = presetGenerator;
|
|
18
18
|
async function createPreset(tree, options) {
|
|
19
|
+
console.log('Crate preset');
|
|
20
|
+
const nxJson = (0, devkit_1.readNxJson)(tree);
|
|
21
|
+
const addPlugin = process.env.NX_ADD_PLUGINS !== 'false' &&
|
|
22
|
+
nxJson.useInferencePlugins !== false;
|
|
19
23
|
if (options.preset === presets_1.Preset.Apps) {
|
|
20
24
|
return;
|
|
21
25
|
}
|
|
@@ -30,6 +34,9 @@ async function createPreset(tree, options) {
|
|
|
30
34
|
standalone: options.standaloneApi,
|
|
31
35
|
routing: options.routing,
|
|
32
36
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
37
|
+
bundler: options.bundler,
|
|
38
|
+
ssr: options.ssr,
|
|
39
|
+
prefix: options.prefix,
|
|
33
40
|
});
|
|
34
41
|
}
|
|
35
42
|
else if (options.preset === presets_1.Preset.AngularStandalone) {
|
|
@@ -44,6 +51,9 @@ async function createPreset(tree, options) {
|
|
|
44
51
|
rootProject: true,
|
|
45
52
|
standalone: options.standaloneApi,
|
|
46
53
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
54
|
+
bundler: options.bundler,
|
|
55
|
+
ssr: options.ssr,
|
|
56
|
+
prefix: options.prefix,
|
|
47
57
|
});
|
|
48
58
|
}
|
|
49
59
|
else if (options.preset === presets_1.Preset.ReactMonorepo) {
|
|
@@ -57,6 +67,7 @@ async function createPreset(tree, options) {
|
|
|
57
67
|
linter: options.linter,
|
|
58
68
|
bundler: options.bundler ?? 'webpack',
|
|
59
69
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
70
|
+
addPlugin,
|
|
60
71
|
});
|
|
61
72
|
}
|
|
62
73
|
else if (options.preset === presets_1.Preset.ReactStandalone) {
|
|
@@ -72,6 +83,34 @@ async function createPreset(tree, options) {
|
|
|
72
83
|
bundler: options.bundler ?? 'vite',
|
|
73
84
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
74
85
|
unitTestRunner: options.bundler === 'vite' ? 'vitest' : 'jest',
|
|
86
|
+
addPlugin,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else if (options.preset === presets_1.Preset.RemixMonorepo) {
|
|
90
|
+
const { applicationGenerator: remixApplicationGenerator } = require('@nx' +
|
|
91
|
+
'/remix/generators');
|
|
92
|
+
return remixApplicationGenerator(tree, {
|
|
93
|
+
name: options.name,
|
|
94
|
+
directory: (0, path_1.join)('apps', options.name),
|
|
95
|
+
projectNameAndRootFormat: 'as-provided',
|
|
96
|
+
linter: options.linter,
|
|
97
|
+
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
98
|
+
unitTestRunner: 'vitest',
|
|
99
|
+
addPlugin,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else if (options.preset === presets_1.Preset.RemixStandalone) {
|
|
103
|
+
const { applicationGenerator: remixApplicationGenerator } = require('@nx' +
|
|
104
|
+
'/remix/generators');
|
|
105
|
+
return remixApplicationGenerator(tree, {
|
|
106
|
+
name: options.name,
|
|
107
|
+
directory: '.',
|
|
108
|
+
projectNameAndRootFormat: 'as-provided',
|
|
109
|
+
linter: options.linter,
|
|
110
|
+
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
111
|
+
rootProject: true,
|
|
112
|
+
unitTestRunner: 'vitest',
|
|
113
|
+
addPlugin,
|
|
75
114
|
});
|
|
76
115
|
}
|
|
77
116
|
else if (options.preset === presets_1.Preset.VueMonorepo) {
|
|
@@ -84,6 +123,7 @@ async function createPreset(tree, options) {
|
|
|
84
123
|
style: options.style,
|
|
85
124
|
linter: options.linter,
|
|
86
125
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
126
|
+
addPlugin,
|
|
87
127
|
});
|
|
88
128
|
}
|
|
89
129
|
else if (options.preset === presets_1.Preset.VueStandalone) {
|
|
@@ -98,6 +138,35 @@ async function createPreset(tree, options) {
|
|
|
98
138
|
rootProject: true,
|
|
99
139
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
100
140
|
unitTestRunner: 'vitest',
|
|
141
|
+
addPlugin,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else if (options.preset === presets_1.Preset.Nuxt) {
|
|
145
|
+
const { applicationGenerator: nuxtApplicationGenerator } = require('@nx' +
|
|
146
|
+
'/nuxt');
|
|
147
|
+
return nuxtApplicationGenerator(tree, {
|
|
148
|
+
name: options.name,
|
|
149
|
+
directory: (0, path_1.join)('apps', options.name),
|
|
150
|
+
projectNameAndRootFormat: 'as-provided',
|
|
151
|
+
style: options.style,
|
|
152
|
+
linter: options.linter,
|
|
153
|
+
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
154
|
+
addPlugin,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else if (options.preset === presets_1.Preset.NuxtStandalone) {
|
|
158
|
+
const { applicationGenerator: nuxtApplicationGenerator } = require('@nx' +
|
|
159
|
+
'/nuxt');
|
|
160
|
+
return nuxtApplicationGenerator(tree, {
|
|
161
|
+
name: options.name,
|
|
162
|
+
directory: '.',
|
|
163
|
+
projectNameAndRootFormat: 'as-provided',
|
|
164
|
+
style: options.style,
|
|
165
|
+
linter: options.linter,
|
|
166
|
+
rootProject: true,
|
|
167
|
+
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
168
|
+
unitTestRunner: 'vitest',
|
|
169
|
+
addPlugin,
|
|
101
170
|
});
|
|
102
171
|
}
|
|
103
172
|
else if (options.preset === presets_1.Preset.NextJs) {
|
|
@@ -110,7 +179,9 @@ async function createPreset(tree, options) {
|
|
|
110
179
|
style: options.style,
|
|
111
180
|
linter: options.linter,
|
|
112
181
|
appDir: options.nextAppDir,
|
|
182
|
+
src: options.nextSrcDir,
|
|
113
183
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
184
|
+
addPlugin,
|
|
114
185
|
});
|
|
115
186
|
}
|
|
116
187
|
else if (options.preset === presets_1.Preset.NextJsStandalone) {
|
|
@@ -123,8 +194,10 @@ async function createPreset(tree, options) {
|
|
|
123
194
|
style: options.style,
|
|
124
195
|
linter: options.linter,
|
|
125
196
|
appDir: options.nextAppDir,
|
|
197
|
+
src: options.nextSrcDir,
|
|
126
198
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
127
199
|
rootProject: true,
|
|
200
|
+
addPlugin,
|
|
128
201
|
});
|
|
129
202
|
}
|
|
130
203
|
else if (options.preset === presets_1.Preset.WebComponents) {
|
|
@@ -138,6 +211,7 @@ async function createPreset(tree, options) {
|
|
|
138
211
|
linter: options.linter,
|
|
139
212
|
bundler: 'vite',
|
|
140
213
|
e2eTestRunner: options.e2eTestRunner ?? 'cypress',
|
|
214
|
+
addPlugin,
|
|
141
215
|
});
|
|
142
216
|
}
|
|
143
217
|
else if (options.preset === presets_1.Preset.Nest) {
|
|
@@ -149,6 +223,7 @@ async function createPreset(tree, options) {
|
|
|
149
223
|
projectNameAndRootFormat: 'as-provided',
|
|
150
224
|
linter: options.linter,
|
|
151
225
|
e2eTestRunner: options.e2eTestRunner ?? 'jest',
|
|
226
|
+
addPlugin,
|
|
152
227
|
});
|
|
153
228
|
}
|
|
154
229
|
else if (options.preset === presets_1.Preset.Express) {
|
|
@@ -159,17 +234,22 @@ async function createPreset(tree, options) {
|
|
|
159
234
|
projectNameAndRootFormat: 'as-provided',
|
|
160
235
|
linter: options.linter,
|
|
161
236
|
e2eTestRunner: options.e2eTestRunner ?? 'jest',
|
|
237
|
+
addPlugin,
|
|
162
238
|
});
|
|
163
239
|
}
|
|
164
240
|
else if (options.preset === presets_1.Preset.ReactNative) {
|
|
241
|
+
console.log('Before require');
|
|
165
242
|
const { reactNativeApplicationGenerator } = require('@nx' +
|
|
166
243
|
'/react-native');
|
|
244
|
+
console.log('Hello', reactNativeApplicationGenerator);
|
|
245
|
+
console.log('Active require');
|
|
167
246
|
return reactNativeApplicationGenerator(tree, {
|
|
168
247
|
name: options.name,
|
|
169
248
|
directory: (0, path_1.join)('apps', options.name),
|
|
170
249
|
projectNameAndRootFormat: 'as-provided',
|
|
171
250
|
linter: options.linter,
|
|
172
251
|
e2eTestRunner: options.e2eTestRunner ?? 'detox',
|
|
252
|
+
addPlugin,
|
|
173
253
|
});
|
|
174
254
|
}
|
|
175
255
|
else if (options.preset === presets_1.Preset.Expo) {
|
|
@@ -180,6 +260,7 @@ async function createPreset(tree, options) {
|
|
|
180
260
|
projectNameAndRootFormat: 'as-provided',
|
|
181
261
|
linter: options.linter,
|
|
182
262
|
e2eTestRunner: options.e2eTestRunner ?? 'detox',
|
|
263
|
+
addPlugin,
|
|
183
264
|
});
|
|
184
265
|
}
|
|
185
266
|
else if (options.preset === presets_1.Preset.TS) {
|
|
@@ -197,6 +278,7 @@ async function createPreset(tree, options) {
|
|
|
197
278
|
testEnvironment: 'node',
|
|
198
279
|
js: options.js,
|
|
199
280
|
rootProject: true,
|
|
281
|
+
addPlugin,
|
|
200
282
|
});
|
|
201
283
|
}
|
|
202
284
|
else if (options.preset === presets_1.Preset.NodeStandalone) {
|
|
@@ -214,6 +296,7 @@ async function createPreset(tree, options) {
|
|
|
214
296
|
docker: options.docker,
|
|
215
297
|
rootProject: true,
|
|
216
298
|
e2eTestRunner: options.e2eTestRunner ?? 'jest',
|
|
299
|
+
addPlugin,
|
|
217
300
|
});
|
|
218
301
|
}
|
|
219
302
|
else if (options.preset === presets_1.Preset.NodeMonorepo) {
|
|
@@ -230,6 +313,7 @@ async function createPreset(tree, options) {
|
|
|
230
313
|
docker: options.docker,
|
|
231
314
|
rootProject: false,
|
|
232
315
|
e2eTestRunner: options.e2eTestRunner ?? 'jest',
|
|
316
|
+
addPlugin,
|
|
233
317
|
});
|
|
234
318
|
}
|
|
235
319
|
else {
|
|
@@ -12,8 +12,11 @@ export interface Schema {
|
|
|
12
12
|
bundler?: 'vite' | 'webpack' | 'rspack' | 'esbuild';
|
|
13
13
|
docker?: boolean;
|
|
14
14
|
nextAppDir?: boolean;
|
|
15
|
+
nextSrcDir?: boolean;
|
|
15
16
|
routing?: boolean;
|
|
16
17
|
standaloneApi?: boolean;
|
|
17
18
|
e2eTestRunner?: 'cypress' | 'playwright' | 'jest' | 'detox' | 'none';
|
|
18
19
|
js?: boolean;
|
|
20
|
+
ssr?: boolean;
|
|
21
|
+
prefix?: string;
|
|
19
22
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "NxWorkspacePreset",
|
|
4
4
|
"cli": "nx",
|
|
5
5
|
"title": "Creates applications in a new workspace",
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"value": "scss",
|
|
42
|
-
"label": "SASS(.scss) [
|
|
42
|
+
"label": "SASS(.scss) [ https://sass-lang.com ]"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"value": "less",
|
|
46
|
-
"label": "LESS [
|
|
46
|
+
"label": "LESS [ https://lesscss.org ]"
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
}
|
|
@@ -85,10 +85,24 @@
|
|
|
85
85
|
"type": "boolean",
|
|
86
86
|
"default": true
|
|
87
87
|
},
|
|
88
|
+
"nextSrcDir": {
|
|
89
|
+
"description": "Generate a `src` directory for this project.",
|
|
90
|
+
"type": "boolean",
|
|
91
|
+
"default": true
|
|
92
|
+
},
|
|
88
93
|
"e2eTestRunner": {
|
|
89
94
|
"description": "The tool to use for running e2e tests.",
|
|
90
95
|
"type": "string",
|
|
91
96
|
"enum": ["cypress", "playwright", "jest", "detox", "none"]
|
|
97
|
+
},
|
|
98
|
+
"ssr": {
|
|
99
|
+
"description": "Enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) for the Angular application.",
|
|
100
|
+
"type": "boolean",
|
|
101
|
+
"default": false
|
|
102
|
+
},
|
|
103
|
+
"prefix": {
|
|
104
|
+
"description": "The prefix to use for Angular component and directive selectors.",
|
|
105
|
+
"type": "string"
|
|
92
106
|
}
|
|
93
107
|
},
|
|
94
108
|
"required": ["preset", "name"]
|
|
@@ -5,9 +5,16 @@ const devkit_1 = require("@nx/devkit");
|
|
|
5
5
|
const get_source_nodes_1 = require("../../../utilities/typescript/get-source-nodes");
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const typescript_1 = require("../../../utilities/typescript");
|
|
8
|
+
const jest_config_1 = require("../../utils/jest-config");
|
|
8
9
|
let tsModule;
|
|
9
10
|
function isUsingUtilityFunction(host) {
|
|
10
|
-
|
|
11
|
+
const rootConfigPath = (0, jest_config_1.findRootJestConfig)(host);
|
|
12
|
+
if (!rootConfigPath) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const rootConfig = host.read(rootConfigPath, 'utf-8');
|
|
16
|
+
return (rootConfig.includes('getJestProjects()') ||
|
|
17
|
+
rootConfig.includes('getJestProjectsAsync()'));
|
|
11
18
|
}
|
|
12
19
|
/**
|
|
13
20
|
* in a standalone project, the root jest.config.ts is a project config instead
|
|
@@ -15,7 +22,11 @@ function isUsingUtilityFunction(host) {
|
|
|
15
22
|
* in that case we do not need to edit it to remove it
|
|
16
23
|
**/
|
|
17
24
|
function isMonorepoConfig(tree) {
|
|
18
|
-
|
|
25
|
+
const rootConfigPath = (0, jest_config_1.findRootJestConfig)(tree);
|
|
26
|
+
if (!rootConfigPath) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return tree.read(rootConfigPath, 'utf-8').includes('projects:');
|
|
19
30
|
}
|
|
20
31
|
/**
|
|
21
32
|
* Updates the root jest config projects array and removes the project.
|
|
@@ -26,14 +37,15 @@ function updateJestConfig(tree, schema, projectConfig) {
|
|
|
26
37
|
}
|
|
27
38
|
const { createSourceFile, ScriptTarget, isPropertyAssignment, isArrayLiteralExpression, isStringLiteral, } = tsModule;
|
|
28
39
|
const projectToRemove = schema.projectName;
|
|
29
|
-
|
|
40
|
+
const rootConfigPath = (0, jest_config_1.findRootJestConfig)(tree);
|
|
41
|
+
if (!tree.exists(rootConfigPath) ||
|
|
30
42
|
!tree.exists((0, path_1.join)(projectConfig.root, 'jest.config.ts')) ||
|
|
31
43
|
isUsingUtilityFunction(tree) ||
|
|
32
44
|
!isMonorepoConfig(tree)) {
|
|
33
45
|
return;
|
|
34
46
|
}
|
|
35
|
-
const contents = tree.read(
|
|
36
|
-
const sourceFile = createSourceFile(
|
|
47
|
+
const contents = tree.read(rootConfigPath, 'utf-8');
|
|
48
|
+
const sourceFile = createSourceFile(rootConfigPath, contents, ScriptTarget.Latest);
|
|
37
49
|
const sourceNodes = (0, get_source_nodes_1.getSourceNodes)(sourceFile);
|
|
38
50
|
const projectsAssignment = sourceNodes.find((node) => isPropertyAssignment(node) &&
|
|
39
51
|
node.name.getText(sourceFile) === 'projects' &&
|
|
@@ -52,7 +64,7 @@ function updateJestConfig(tree, schema, projectConfig) {
|
|
|
52
64
|
const start = previousProject
|
|
53
65
|
? previousProject.getEnd()
|
|
54
66
|
: project.getStart(sourceFile);
|
|
55
|
-
tree.write(
|
|
67
|
+
tree.write(rootConfigPath, (0, devkit_1.applyChangesToString)(contents, [
|
|
56
68
|
{
|
|
57
69
|
type: devkit_1.ChangeType.Delete,
|
|
58
70
|
start,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findRootJestConfig = void 0;
|
|
4
|
+
function findRootJestConfig(tree) {
|
|
5
|
+
if (tree.exists('jest.config.js')) {
|
|
6
|
+
return 'jest.config.js';
|
|
7
|
+
}
|
|
8
|
+
if (tree.exists('jest.config.ts')) {
|
|
9
|
+
return 'jest.config.ts';
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
exports.findRootJestConfig = findRootJestConfig;
|
|
@@ -14,9 +14,13 @@ export declare enum Preset {
|
|
|
14
14
|
ReactMonorepo = "react-monorepo",
|
|
15
15
|
ReactStandalone = "react-standalone",
|
|
16
16
|
NextJsStandalone = "nextjs-standalone",
|
|
17
|
+
RemixMonorepo = "remix-monorepo",
|
|
18
|
+
RemixStandalone = "remix-standalone",
|
|
17
19
|
ReactNative = "react-native",
|
|
18
20
|
VueMonorepo = "vue-monorepo",
|
|
19
21
|
VueStandalone = "vue-standalone",
|
|
22
|
+
Nuxt = "nuxt",
|
|
23
|
+
NuxtStandalone = "nuxt-standalone",
|
|
20
24
|
Expo = "expo",
|
|
21
25
|
NextJs = "next",
|
|
22
26
|
Nest = "nest",
|
|
@@ -4,7 +4,7 @@ exports.Preset = void 0;
|
|
|
4
4
|
var Preset;
|
|
5
5
|
(function (Preset) {
|
|
6
6
|
Preset["Apps"] = "apps";
|
|
7
|
-
// TODO(
|
|
7
|
+
// TODO(v19): Remove Empty and Core presets
|
|
8
8
|
/** @deprecated Use Apps instead
|
|
9
9
|
*/
|
|
10
10
|
Preset["Empty"] = "empty";
|
|
@@ -19,9 +19,13 @@ var Preset;
|
|
|
19
19
|
Preset["ReactMonorepo"] = "react-monorepo";
|
|
20
20
|
Preset["ReactStandalone"] = "react-standalone";
|
|
21
21
|
Preset["NextJsStandalone"] = "nextjs-standalone";
|
|
22
|
+
Preset["RemixMonorepo"] = "remix-monorepo";
|
|
23
|
+
Preset["RemixStandalone"] = "remix-standalone";
|
|
22
24
|
Preset["ReactNative"] = "react-native";
|
|
23
25
|
Preset["VueMonorepo"] = "vue-monorepo";
|
|
24
26
|
Preset["VueStandalone"] = "vue-standalone";
|
|
27
|
+
Preset["Nuxt"] = "nuxt";
|
|
28
|
+
Preset["NuxtStandalone"] = "nuxt-standalone";
|
|
25
29
|
Preset["Expo"] = "expo";
|
|
26
30
|
Preset["NextJs"] = "next";
|
|
27
31
|
Preset["Nest"] = "nest";
|
package/src/utils/output.js
CHANGED
|
@@ -10,7 +10,7 @@ if (process.env.CI === 'true') {
|
|
|
10
10
|
}
|
|
11
11
|
class CLIOutput {
|
|
12
12
|
constructor() {
|
|
13
|
-
this.NX_PREFIX =
|
|
13
|
+
this.NX_PREFIX = chalk.reset.inverse.bold.cyan(' NX ');
|
|
14
14
|
/**
|
|
15
15
|
* Longer dash character which forms more of a continuous line when place side to side
|
|
16
16
|
* with itself, unlike the standard dash character
|
package/src/utils/versions.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const nxVersion: any;
|
|
2
|
-
export declare const typescriptVersion = "~5.
|
|
3
|
-
export declare const angularCliVersion = "~
|
|
2
|
+
export declare const typescriptVersion = "~5.4.2";
|
|
3
|
+
export declare const angularCliVersion = "~17.3.0";
|
package/src/utils/versions.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.angularCliVersion = exports.typescriptVersion = exports.nxVersion = void 0;
|
|
4
4
|
exports.nxVersion = require('../../package.json').version;
|
|
5
|
-
exports.typescriptVersion = '~5.
|
|
5
|
+
exports.typescriptVersion = '~5.4.2';
|
|
6
6
|
// TODO: remove when preset generation is reworked and
|
|
7
7
|
// deps are not installed from workspace
|
|
8
|
-
exports.angularCliVersion = '~
|
|
8
|
+
exports.angularCliVersion = '~17.3.0';
|