From ca92b7aa0b477190cee100e11b6f75fabb3fc6f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Fri, 17 Jun 2022 11:58:01 +0100 Subject: [PATCH] fix(angular): set default project if not set when creating an application (#10789) --- .../application/application.spec.ts | 24 +++++++++++++++++++ .../src/generators/application/application.ts | 2 ++ .../src/generators/application/lib/index.ts | 1 + .../application/lib/set-default-project.ts | 15 ++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 packages/angular/src/generators/application/lib/set-default-project.ts diff --git a/packages/angular/src/generators/application/application.spec.ts b/packages/angular/src/generators/application/application.spec.ts index 29ba9bcb97..bcde5363be 100644 --- a/packages/angular/src/generators/application/application.spec.ts +++ b/packages/angular/src/generators/application/application.spec.ts @@ -5,6 +5,7 @@ import { parseJson, readJson, readProjectConfiguration, + readWorkspaceConfiguration, updateJson, } from '@nrwl/devkit'; import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; @@ -204,6 +205,29 @@ describe('app', () => { const appTsConfig = readJson(appTree, 'apps/app/tsconfig.json'); expect(appTsConfig.extends).toBe('../../tsconfig.json'); }); + + it('should set default project', async () => { + // ACT + await generateApp(appTree); + + // ASSERT + const { defaultProject } = readWorkspaceConfiguration(appTree); + expect(defaultProject).toBe('my-app'); + }); + + it('should not overwrite default project if already set', async () => { + // ARRANGE + const workspace = readWorkspaceConfiguration(appTree); + workspace.defaultProject = 'some-awesome-project'; + devkit.updateWorkspaceConfiguration(appTree, workspace); + + // ACT + await generateApp(appTree); + + // ASSERT + const { defaultProject } = readWorkspaceConfiguration(appTree); + expect(defaultProject).toBe('some-awesome-project'); + }); }); describe('nested', () => { diff --git a/packages/angular/src/generators/application/application.ts b/packages/angular/src/generators/application/application.ts index fee878ab4f..771fb7e139 100644 --- a/packages/angular/src/generators/application/application.ts +++ b/packages/angular/src/generators/application/application.ts @@ -20,6 +20,7 @@ import { enableStrictTypeChecking, normalizeOptions, setApplicationStrictDefault, + setDefaultProject, updateAppComponentTemplate, updateComponentSpec, updateConfigFiles, @@ -106,6 +107,7 @@ export async function applicationGenerator( await addUnitTestRunner(host, options); await addE2e(host, options); updateEditorTsConfig(host, options); + setDefaultProject(host, options); if (options.backendProject) { addProxyConfig(host, options); diff --git a/packages/angular/src/generators/application/lib/index.ts b/packages/angular/src/generators/application/lib/index.ts index 29c0a2bef4..ac706104cd 100644 --- a/packages/angular/src/generators/application/lib/index.ts +++ b/packages/angular/src/generators/application/lib/index.ts @@ -12,6 +12,7 @@ export * from './nrwl-home-tpl'; export * from './remove-scaffolded-e2e'; export * from './root-router-config'; export * from './set-app-strict-default'; +export * from './set-default-project'; export * from './update-component-spec'; export * from './update-app-component-template'; export * from './update-nx-component-template'; diff --git a/packages/angular/src/generators/application/lib/set-default-project.ts b/packages/angular/src/generators/application/lib/set-default-project.ts new file mode 100644 index 0000000000..3380ab0a56 --- /dev/null +++ b/packages/angular/src/generators/application/lib/set-default-project.ts @@ -0,0 +1,15 @@ +import type { Tree } from '@nrwl/devkit'; +import { + readWorkspaceConfiguration, + updateWorkspaceConfiguration, +} from '@nrwl/devkit'; +import type { NormalizedSchema } from './normalized-schema'; + +export function setDefaultProject(tree: Tree, options: NormalizedSchema): void { + const workspace = readWorkspaceConfiguration(tree); + + if (!workspace.defaultProject) { + workspace.defaultProject = options.name; + updateWorkspaceConfiguration(tree, workspace); + } +}