diff --git a/packages/devkit/src/generators/format-files.ts b/packages/devkit/src/generators/format-files.ts index b60146c9621b3..9b99f1385f2ea 100644 --- a/packages/devkit/src/generators/format-files.ts +++ b/packages/devkit/src/generators/format-files.ts @@ -2,12 +2,7 @@ import type { Tree } from 'nx/src/generators/tree'; import * as path from 'path'; import type * as Prettier from 'prettier'; import { readJson, updateJson, writeJson } from 'nx/src/generators/utils/json'; -import { - getWorkspacePath, - readWorkspaceConfiguration, - updateWorkspaceConfiguration, - WorkspaceConfiguration, -} from 'nx/src/generators/utils/project-configuration'; +import { getWorkspacePath } from 'nx/src/generators/utils/project-configuration'; import { sortObjectByKeys } from 'nx/src/utils/object-sort'; /** @@ -20,7 +15,6 @@ export async function formatFiles(tree: Tree): Promise { prettier = await import('prettier'); } catch {} - ensurePropertiesAreInNewLocations(tree); sortWorkspaceJson(tree); sortTsConfig(tree); @@ -88,41 +82,6 @@ function sortWorkspaceJson(tree: Tree) { } } -/** - * `updateWorkspaceConfiguration` already handles - * placing properties in their new locations, so - * reading + updating it ensures that props are placed - * correctly. - */ -function ensurePropertiesAreInNewLocations(tree: Tree) { - // If nx.json doesn't exist then there is no where to move these properties to - if (!tree.exists('nx.json')) { - return; - } - - const workspacePath = getWorkspacePath(tree); - if (!workspacePath) { - return; - } - const wc = readWorkspaceConfiguration(tree); - updateJson(tree, workspacePath, (json) => { - wc.generators ??= json.generators ?? (json as any).schematics; - if (wc.cli) { - wc.cli.defaultCollection ??= json.cli?.defaultCollection; - wc.cli.packageManager ??= json.cli?.packageManager; - } else if (json.cli) { - wc.cli ??= json.cli; - } - wc.defaultProject ??= json.defaultProject; - delete json.cli; - delete json.defaultProject; - delete (json as any).schematics; - delete json.generators; - return json; - }); - updateWorkspaceConfiguration(tree, wc); -} - function sortTsConfig(tree: Tree) { try { const tsConfigPath = getRootTsConfigPath(tree); diff --git a/packages/workspace/src/generators/new/generate-preset.ts b/packages/workspace/src/generators/new/generate-preset.ts index b3e6e05a152b8..02c22e8c7b947 100644 --- a/packages/workspace/src/generators/new/generate-preset.ts +++ b/packages/workspace/src/generators/new/generate-preset.ts @@ -35,6 +35,9 @@ export function addPresetDependencies(host: Tree, options: NormalizedSchema) { export function generatePreset(host: Tree, opts: NormalizedSchema) { const parsedArgs = yargsParser(process.argv, { boolean: ['interactive'], + default: { + interactive: true, + }, }); const spawnOptions = { stdio: [process.stdin, process.stdout, process.stderr], diff --git a/packages/workspace/src/migrations/update-13-0-0/config-locations/config-locations.ts b/packages/workspace/src/migrations/update-13-0-0/config-locations/config-locations.ts index 30b33555402bd..bf2fca7ccce84 100644 --- a/packages/workspace/src/migrations/update-13-0-0/config-locations/config-locations.ts +++ b/packages/workspace/src/migrations/update-13-0-0/config-locations/config-locations.ts @@ -1,16 +1,21 @@ import { + formatFiles, + getWorkspacePath, NxJsonConfiguration, ProjectConfiguration, readJson, - writeJson, readProjectConfiguration, + readWorkspaceConfiguration, Tree, + updateJson, updateProjectConfiguration, - formatFiles, + updateWorkspaceConfiguration, + WorkspaceConfiguration, + writeJson, } from '@nrwl/devkit'; -export default async function update(host: Tree) { - const nxJson = readJson(host, 'nx.json') as NxJsonConfiguration & { +export default async function update(tree: Tree) { + const nxJson = readJson(tree, 'nx.json') as NxJsonConfiguration & { projects: Record< string, Pick @@ -19,14 +24,52 @@ export default async function update(host: Tree) { // updateProjectConfiguration automatically saves the project opts into workspace/project.json if (nxJson.projects) { Object.entries(nxJson.projects).forEach(([p, nxJsonConfig]) => { - const configuration = readProjectConfiguration(host, p); + const configuration = readProjectConfiguration(tree, p); configuration.tags ??= nxJsonConfig.tags; configuration.implicitDependencies ??= nxJsonConfig.implicitDependencies; - updateProjectConfiguration(host, p, configuration); + updateProjectConfiguration(tree, p, configuration); }); delete nxJson.projects; } - writeJson(host, 'nx.json', nxJson); - await formatFiles(host); // format files handles moving config options to new spots. + writeJson(tree, 'nx.json', nxJson); + + movePropertiesAreInNewLocations(tree); // move config options to new spots. + + await formatFiles(tree); +} + +/** + * `updateWorkspaceConfiguration` already handles + * placing properties in their new locations, so + * reading + updating it ensures that props are placed + * correctly. + */ +function movePropertiesAreInNewLocations(tree: Tree) { + // If nx.json doesn't exist then there is no where to move these properties to + if (!tree.exists('nx.json')) { + return; + } + + const workspacePath = getWorkspacePath(tree); + if (!workspacePath) { + return; + } + const wc = readWorkspaceConfiguration(tree); + updateJson(tree, workspacePath, (json) => { + wc.generators ??= json.generators ?? (json as any).schematics; + if (wc.cli) { + wc.cli.defaultCollection ??= json.cli?.defaultCollection; + wc.cli.packageManager ??= json.cli?.packageManager; + } else if (json.cli) { + wc.cli ??= json.cli; + } + wc.defaultProject ??= json.defaultProject; + delete json.cli; + delete json.defaultProject; + delete (json as any).schematics; + delete json.generators; + return json; + }); + updateWorkspaceConfiguration(tree, wc); }