Skip to content

Commit a89c734

Browse files
authored
feat(core): use flag in nx.json for toggling crystal (#21980)
1 parent e9da3db commit a89c734

File tree

62 files changed

+385
-122
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+385
-122
lines changed

docs/generated/devkit/NxJsonConfiguration.md

+9
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Nx.json configuration
3838
- [targetDefaults](../../devkit/documents/NxJsonConfiguration#targetdefaults): TargetDefaults
3939
- [tasksRunnerOptions](../../devkit/documents/NxJsonConfiguration#tasksrunneroptions): Object
4040
- [useDaemonProcess](../../devkit/documents/NxJsonConfiguration#usedaemonprocess): boolean
41+
- [useInferencePlugins](../../devkit/documents/NxJsonConfiguration#useinferenceplugins): boolean
4142
- [workspaceLayout](../../devkit/documents/NxJsonConfiguration#workspacelayout): Object
4243

4344
## Properties
@@ -248,6 +249,14 @@ Set this to false to disable the daemon.
248249

249250
---
250251

252+
### useInferencePlugins
253+
254+
`Optional` **useInferencePlugins**: `boolean`
255+
256+
Set this to false to disable adding inference plugins when generating new projects
257+
258+
---
259+
251260
### workspaceLayout
252261

253262
`Optional` **workspaceLayout**: `Object`

docs/generated/devkit/Workspace.md

+13
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ use ProjectsConfigurations or NxJsonConfiguration
3737
- [targetDefaults](../../devkit/documents/Workspace#targetdefaults): TargetDefaults
3838
- [tasksRunnerOptions](../../devkit/documents/Workspace#tasksrunneroptions): Object
3939
- [useDaemonProcess](../../devkit/documents/Workspace#usedaemonprocess): boolean
40+
- [useInferencePlugins](../../devkit/documents/Workspace#useinferenceplugins): boolean
4041
- [version](../../devkit/documents/Workspace#version): number
4142
- [workspaceLayout](../../devkit/documents/Workspace#workspacelayout): Object
4243

@@ -340,6 +341,18 @@ Set this to false to disable the daemon.
340341

341342
---
342343

344+
### useInferencePlugins
345+
346+
`Optional` **useInferencePlugins**: `boolean`
347+
348+
Set this to false to disable adding inference plugins when generating new projects
349+
350+
#### Inherited from
351+
352+
[NxJsonConfiguration](../../devkit/documents/NxJsonConfiguration).[useInferencePlugins](../../devkit/documents/NxJsonConfiguration#useinferenceplugins)
353+
354+
---
355+
343356
### version
344357

345358
**version**: `number`

packages/angular/src/generators/application/lib/add-e2e.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ import {
88
joinPathFragments,
99
readProjectConfiguration,
1010
updateProjectConfiguration,
11+
readNxJson,
1112
} from '@nx/devkit';
1213
import { nxVersion } from '../../../utils/versions';
1314
import { getInstalledAngularVersionInfo } from '../../utils/version-utils';
1415
import type { NormalizedSchema } from './normalized-schema';
1516

1617
export async function addE2e(tree: Tree, options: NormalizedSchema) {
1718
// since e2e are separate projects, default to adding plugins
18-
const addPlugin = process.env.NX_ADD_PLUGINS !== 'false';
19+
const nxJson = readNxJson(tree);
20+
const addPlugin =
21+
process.env.NX_ADD_PLUGINS !== 'false' &&
22+
nxJson.useInferencePlugins !== false;
1923

2024
if (options.e2eTestRunner === 'cypress') {
2125
// TODO: This can call `@nx/web:static-config` generator when ready

packages/angular/src/generators/ng-add/migrators/projects/e2e.migrator.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
joinPathFragments,
1212
offsetFromRoot,
1313
readJson,
14+
readNxJson,
1415
readProjectConfiguration,
1516
stripIndents,
1617
updateJson,
@@ -342,14 +343,18 @@ export class E2eMigrator extends ProjectMigrator<SupportedTargets> {
342343
tags: [],
343344
implicitDependencies: [this.appName],
344345
});
346+
const nxJson = readNxJson(this.tree) ?? {};
347+
const addPlugin =
348+
process.env.NX_ADD_PLUGINS !== 'false' &&
349+
nxJson.useInferencePlugins !== false;
345350
await configurationGenerator(this.tree, {
346351
project: this.project.name,
347352
linter: this.isProjectUsingEsLint ? Linter.EsLint : Linter.None,
348353
skipFormat: true,
349354
// any target would do, we replace it later with the target existing in the project being migrated
350355
devServerTarget: `${this.appName}:serve`,
351356
baseUrl: 'http://localhost:4200',
352-
addPlugin: process.env.NX_ADD_PLUGINS !== 'false',
357+
addPlugin,
353358
});
354359

355360
const cypressConfigFilePath = this.updateOrCreateCypressConfigFile(

packages/cypress/src/generators/component-configuration/component-configuration.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export async function componentConfigurationGeneratorInternal(
4343
options: CypressComponentConfigurationSchema
4444
) {
4545
const tasks: GeneratorCallback[] = [];
46-
const opts = normalizeOptions(options);
46+
const opts = normalizeOptions(tree, options);
4747

4848
tasks.push(
4949
await init(tree, {
@@ -78,16 +78,24 @@ export async function componentConfigurationGeneratorInternal(
7878
return runTasksInSerial(...tasks);
7979
}
8080

81-
function normalizeOptions(options: CypressComponentConfigurationSchema) {
81+
function normalizeOptions(
82+
tree: Tree,
83+
options: CypressComponentConfigurationSchema
84+
) {
8285
const cyVersion = installedCypressVersion();
8386
if (cyVersion && cyVersion < 10) {
8487
throw new Error(
8588
'Cypress version of 10 or higher is required to use component testing. See the migration guide to upgrade. https://nx.dev/cypress/v11-migration-guide'
8689
);
8790
}
8891

92+
const nxJson = readNxJson(tree);
93+
const addPlugin =
94+
process.env.NX_ADD_PLUGINS !== 'false' &&
95+
nxJson.useInferencePlugins !== false;
96+
8997
return {
90-
addPlugin: process.env.NX_ADD_PLUGINS !== 'false',
98+
addPlugin,
9199
...options,
92100
directory: options.directory ?? 'cypress',
93101
};

packages/cypress/src/generators/configuration/configuration.ts

+5
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ In this case you need to provide a devServerTarget,'<projectName>:<targetName>[:
150150
throw new Error('Either baseUrl or devServerTarget must be provided');
151151
}
152152

153+
const nxJson = readNxJson(tree);
154+
options.addPlugin ??=
155+
process.env.NX_ADD_PLUGINS !== 'false' &&
156+
nxJson.useInferencePlugins !== false;
157+
153158
return {
154159
...options,
155160
bundler: options.bundler ?? 'webpack',

packages/cypress/src/generators/init/init.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,12 @@ export async function cypressInitGeneratorInternal(
105105
options: Schema
106106
) {
107107
updateProductionFileset(tree);
108-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
108+
109+
const nxJson = readNxJson(tree);
110+
111+
options.addPlugin ??=
112+
process.env.NX_ADD_PLUGINS !== 'false' &&
113+
nxJson.useInferencePlugins !== false;
109114

110115
if (options.addPlugin) {
111116
addPlugin(tree);

packages/detox/src/generators/application/lib/normalize-options.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { names, readProjectConfiguration, Tree } from '@nx/devkit';
1+
import { names, readNxJson, readProjectConfiguration, Tree } from '@nx/devkit';
22
import { determineProjectNameAndRootOptions } from '@nx/devkit/src/generators/project-name-and-root-utils';
33
import { Schema } from '../schema';
44

@@ -23,8 +23,11 @@ export async function normalizeOptions(
2323
projectNameAndRootFormat: options.projectNameAndRootFormat,
2424
callingGenerator: '@nx/detox:application',
2525
});
26-
27-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
26+
const nxJson = readNxJson(host);
27+
const addPlugin =
28+
process.env.NX_ADD_PLUGINS !== 'false' &&
29+
nxJson.useInferencePlugins !== false;
30+
options.addPlugin ??= addPlugin;
2831

2932
const { fileName: appFileName, className: appClassName } = names(
3033
options.appName || options.appProject

packages/detox/src/generators/init/init.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ export function detoxInitGenerator(host: Tree, schema: Schema) {
2020
export async function detoxInitGeneratorInternal(host: Tree, schema: Schema) {
2121
const tasks: GeneratorCallback[] = [];
2222

23-
schema.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
23+
const nxJson = readNxJson(host);
24+
const addPluginDefault =
25+
process.env.NX_ADD_PLUGINS !== 'false' &&
26+
nxJson.useInferencePlugins !== false;
27+
28+
schema.addPlugin ??= addPluginDefault;
2429

2530
if (!schema.skipPackageJson) {
2631
tasks.push(moveDependency(host));

packages/eslint/src/generators/init/init.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,11 @@ export async function initEsLint(
7474
tree: Tree,
7575
options: LinterInitOptions
7676
): Promise<GeneratorCallback> {
77-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
77+
const nxJson = readNxJson(tree);
78+
const addPluginDefault =
79+
process.env.NX_ADD_PLUGINS !== 'false' &&
80+
nxJson.useInferencePlugins !== false;
81+
options.addPlugin ??= addPluginDefault;
7882
const hasPlugin = hasEslintPlugin(tree);
7983
const rootEslintFile = findEslintFile(tree);
8084

packages/eslint/src/generators/lint-project/lint-project.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
Tree,
66
} from '@nx/devkit';
77
import {
8+
readNxJson,
89
formatFiles,
910
offsetFromRoot,
1011
readJson,
@@ -67,7 +68,11 @@ export async function lintProjectGeneratorInternal(
6768
tree: Tree,
6869
options: LintProjectOptions
6970
) {
70-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
71+
const nxJson = readNxJson(tree);
72+
const addPluginDefault =
73+
process.env.NX_ADD_PLUGINS !== 'false' &&
74+
nxJson.useInferencePlugins !== false;
75+
options.addPlugin ??= addPluginDefault;
7176
const tasks: GeneratorCallback[] = [];
7277
const initTask = await lintInitGenerator(tree, {
7378
skipPackageJson: options.skipPackageJson,

packages/eslint/src/generators/workspace-rule/workspace-rule.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
generateFiles,
66
joinPathFragments,
77
logger,
8+
readNxJson,
89
Tree,
910
} from '@nx/devkit';
1011
import { camelize } from '@nx/devkit/src/utils/string-utils';
@@ -22,10 +23,16 @@ export async function lintWorkspaceRuleGenerator(
2223
tree: Tree,
2324
options: LintWorkspaceRuleGeneratorOptions
2425
) {
26+
const nxJson = readNxJson(tree);
2527
// Ensure that the workspace rules project has been created
2628
const projectGeneratorCallback = await lintWorkspaceRulesProjectGenerator(
2729
tree,
28-
{ skipFormat: true, addPlugin: process.env.NX_ADD_PLUGINS !== 'false' }
30+
{
31+
skipFormat: true,
32+
addPlugin:
33+
process.env.NX_ADD_PLUGINS !== 'false' &&
34+
nxJson.useInferencePlugins !== false,
35+
}
2936
);
3037

3138
const ruleDir = joinPathFragments(

packages/expo/src/generators/application/lib/normalize-options.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { names, Tree } from '@nx/devkit';
1+
import { names, readNxJson, Tree } from '@nx/devkit';
22
import { determineProjectNameAndRootOptions } from '@nx/devkit/src/generators/project-name-and-root-utils';
33
import { Schema } from '../schema';
44

@@ -30,7 +30,11 @@ export async function normalizeOptions(
3030
callingGenerator: '@nx/expo:application',
3131
});
3232
options.projectNameAndRootFormat = projectNameAndRootFormat;
33-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
33+
const nxJson = readNxJson(host);
34+
const addPluginDefault =
35+
process.env.NX_ADD_PLUGINS !== 'false' &&
36+
nxJson.useInferencePlugins !== false;
37+
options.addPlugin ??= addPluginDefault;
3438

3539
const { className } = names(options.name);
3640
const parsedTags = options.tags

packages/expo/src/generators/init/init.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ export function expoInitGenerator(tree: Tree, schema: Schema) {
2828
}
2929

3030
export async function expoInitGeneratorInternal(host: Tree, schema: Schema) {
31-
schema.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
31+
const nxJson = readNxJson(host);
32+
const addPluginDefault =
33+
process.env.NX_ADD_PLUGINS !== 'false' &&
34+
nxJson.useInferencePlugins !== false;
35+
schema.addPlugin ??= addPluginDefault;
3236

3337
addGitIgnoreEntry(host);
3438

packages/expo/src/generators/library/lib/normalize-options.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Tree } from '@nx/devkit';
1+
import { Tree, readNxJson } from '@nx/devkit';
22
import { determineProjectNameAndRootOptions } from '@nx/devkit/src/generators/project-name-and-root-utils';
33
import { Schema } from '../schema';
44

@@ -28,7 +28,11 @@ export async function normalizeOptions(
2828
projectNameAndRootFormat: options.projectNameAndRootFormat,
2929
callingGenerator: '@nx/expo:library',
3030
});
31-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
31+
const nxJson = readNxJson(host);
32+
const addPluginDefault =
33+
process.env.NX_ADD_PLUGINS !== 'false' &&
34+
nxJson.useInferencePlugins !== false;
35+
options.addPlugin ??= addPluginDefault;
3236

3337
const parsedTags = options.tags
3438
? options.tags.split(',').map((s) => s.trim())

packages/express/src/generators/application/application.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { GeneratorCallback, Tree } from '@nx/devkit';
22
import {
33
addDependenciesToPackageJson,
44
formatFiles,
5+
readNxJson,
56
runTasksInSerial,
67
toJS,
78
updateJson,
@@ -114,7 +115,11 @@ async function normalizeOptions(
114115
callingGenerator: '@nx/express:application',
115116
});
116117
options.projectNameAndRootFormat = projectNameAndRootFormat;
117-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
118+
const nxJson = readNxJson(host);
119+
const addPlugin =
120+
process.env.NX_ADD_PLUGINS !== 'false' &&
121+
nxJson.useInferencePlugins !== false;
122+
options.addPlugin ??= addPlugin;
118123

119124
return {
120125
...options,

packages/jest/src/generators/configuration/configuration.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ function normalizeOptions(
3636
options.testEnvironment = 'jsdom';
3737
}
3838

39-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
39+
const nxJson = readNxJson(tree);
40+
const addPlugin =
41+
process.env.NX_ADD_PLUGINS !== 'false' &&
42+
nxJson.useInferencePlugins !== false;
43+
44+
options.addPlugin ??= addPlugin;
4045

4146
options.targetName ??= 'test';
4247

packages/jest/src/generators/init/init.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,11 @@ export async function jestInitGeneratorInternal(
110110
tree: Tree,
111111
options: JestInitSchema
112112
): Promise<GeneratorCallback> {
113-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
113+
const nxJson = readNxJson(tree);
114+
const addPluginDefault =
115+
process.env.NX_ADD_PLUGINS !== 'false' &&
116+
nxJson.useInferencePlugins !== false;
117+
options.addPlugin ??= addPluginDefault;
114118

115119
const presetExt = isPresetCjs(tree) ? 'cjs' : 'js';
116120

packages/js/src/generators/library/library.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
names,
1010
offsetFromRoot,
1111
ProjectConfiguration,
12+
readNxJson,
1213
readProjectConfiguration,
1314
runTasksInSerial,
1415
toJS,
@@ -585,7 +586,11 @@ async function normalizeOptions(
585586
tree: Tree,
586587
options: LibraryGeneratorSchema
587588
): Promise<NormalizedSchema> {
588-
options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';
589+
const nxJson = readNxJson(tree);
590+
const addPlugin =
591+
process.env.NX_ADD_PLUGINS !== 'false' &&
592+
nxJson.useInferencePlugins !== false;
593+
options.addPlugin ??= addPlugin;
589594

590595
/**
591596
* We are deprecating the compiler and the buildable options.

packages/nest/src/generators/application/lib/normalize-options.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Tree } from '@nx/devkit';
1+
import { Tree, readNxJson } from '@nx/devkit';
22
import { determineProjectNameAndRootOptions } from '@nx/devkit/src/generators/project-name-and-root-utils';
33
import { Linter } from '@nx/eslint';
44
import type { Schema as NodeApplicationGeneratorOptions } from '@nx/node/src/generators/application/schema';
@@ -23,8 +23,13 @@ export async function normalizeOptions(
2323
options.rootProject = appProjectRoot === '.';
2424
options.projectNameAndRootFormat = projectNameAndRootFormat;
2525

26+
const nxJson = readNxJson(tree);
27+
const addPlugin =
28+
process.env.NX_ADD_PLUGINS !== 'false' &&
29+
nxJson.useInferencePlugins !== false;
30+
2631
return {
27-
addPlugin: process.env.NX_ADD_PLUGINS !== 'false',
32+
addPlugin,
2833
...options,
2934
strict: options.strict ?? false,
3035
appProjectName,

0 commit comments

Comments
 (0)