diff --git a/docs/generated/packages/angular/generators/application.json b/docs/generated/packages/angular/generators/application.json index 8159f28174..63896891c6 100644 --- a/docs/generated/packages/angular/generators/application.json +++ b/docs/generated/packages/angular/generators/application.json @@ -156,6 +156,11 @@ "default": false, "hidden": true, "x-priority": "internal" + }, + "minimal": { + "description": "Generate a Angular app with a minimal setup.", + "type": "boolean", + "default": false } }, "additionalProperties": false, diff --git a/docs/generated/packages/react/generators/host.json b/docs/generated/packages/react/generators/host.json index 641c84ca1f..802c15f41a 100644 --- a/docs/generated/packages/react/generators/host.json +++ b/docs/generated/packages/react/generators/host.json @@ -156,6 +156,11 @@ "description": "Whether to configure SSR for the host application", "type": "boolean", "default": false + }, + "minimal": { + "description": "Generate a React app with a minimal setup. No nx starter template.", + "type": "boolean", + "default": false } }, "required": ["name"], diff --git a/packages/angular/src/generators/application/__snapshots__/application.spec.ts.snap b/packages/angular/src/generators/application/__snapshots__/application.spec.ts.snap index 427df656c4..98ac6c5cf4 100644 --- a/packages/angular/src/generators/application/__snapshots__/application.spec.ts.snap +++ b/packages/angular/src/generators/application/__snapshots__/application.spec.ts.snap @@ -1,5 +1,25 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`app --minimal should skip Nx specific \`nx-welcome.component.ts\` file creation 1`] = ` +"import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; + +import { AppComponent } from './app.component'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { } +" +`; + exports[`app --standalone should generate a standalone app correctly with routing 1`] = ` "import { bootstrapApplication } from '@angular/platform-browser'; import { provideRouter, withEnabledBlockingInitialNavigation } from '@angular/router'; diff --git a/packages/angular/src/generators/application/angular-v14/application.ts b/packages/angular/src/generators/application/angular-v14/application.ts index 34f7450778..ba704e002f 100644 --- a/packages/angular/src/generators/application/angular-v14/application.ts +++ b/packages/angular/src/generators/application/angular-v14/application.ts @@ -67,24 +67,26 @@ export async function applicationGenerator( updateConfigFiles(host, options); updateAppComponentTemplate(host, options); - // Create the NxWelcomeComponent - const angularComponentSchematic = wrapAngularDevkitSchematic( - '@schematics/angular', - 'component' - ); - await angularComponentSchematic(host, { - name: 'NxWelcome', - inlineTemplate: true, - inlineStyle: true, - prefix: options.prefix, - skipTests: true, - style: options.style, - flat: true, - viewEncapsulation: 'None', - project: options.name, - standalone: options.standalone, - }); - updateNxComponentTemplate(host, options); + if (!options.minimal) { + // Create the NxWelcomeComponent + const angularComponentSchematic = wrapAngularDevkitSchematic( + '@schematics/angular', + 'component' + ); + await angularComponentSchematic(host, { + name: 'NxWelcome', + inlineTemplate: true, + inlineStyle: true, + prefix: options.prefix, + skipTests: true, + style: options.style, + flat: true, + viewEncapsulation: 'None', + project: options.name, + standalone: options.standalone, + }); + updateNxComponentTemplate(host, options); + } if (options.addTailwind) { await setupTailwindGenerator(host, { diff --git a/packages/angular/src/generators/application/angular-v14/schema.d.ts b/packages/angular/src/generators/application/angular-v14/schema.d.ts index 80178effbc..c60a3c085f 100644 --- a/packages/angular/src/generators/application/angular-v14/schema.d.ts +++ b/packages/angular/src/generators/application/angular-v14/schema.d.ts @@ -26,4 +26,5 @@ export interface Schema { skipPackageJson?: boolean; standalone?: boolean; rootProject?: boolean; + minimal?: boolean; } diff --git a/packages/angular/src/generators/application/application.spec.ts b/packages/angular/src/generators/application/application.spec.ts index 0ea6fe35af..393690e650 100644 --- a/packages/angular/src/generators/application/application.spec.ts +++ b/packages/angular/src/generators/application/application.spec.ts @@ -862,6 +862,19 @@ describe('app', () => { .toThrow(stripIndents`The "standalone" option is only supported in Angular >= 14.1.0. You are currently using 14.0.0. You can resolve this error by removing the "standalone" option or by migrating to Angular 14.1.0.`); }); + + describe('--minimal', () => { + it('should skip Nx specific `nx-welcome.component.ts` file creation', async () => { + await generateApp(appTree, 'plain', { minimal: true }); + + expect( + appTree.read('apps/plain/src/app/app.module.ts', 'utf-8') + ).toMatchSnapshot(); + expect( + appTree.exists('apps/plain/src/app/nx-welcome.component.ts') + ).toBeFalsy(); + }); + }); }); async function generateApp( diff --git a/packages/angular/src/generators/application/application.ts b/packages/angular/src/generators/application/application.ts index 414ce5d913..ed21599326 100644 --- a/packages/angular/src/generators/application/application.ts +++ b/packages/angular/src/generators/application/application.ts @@ -92,24 +92,26 @@ export async function applicationGenerator( updateConfigFiles(tree, options); updateAppComponentTemplate(tree, options); - // Create the NxWelcomeComponent - const angularComponentSchematic = wrapAngularDevkitSchematic( - '@schematics/angular', - 'component' - ); - await angularComponentSchematic(tree, { - name: 'NxWelcome', - inlineTemplate: true, - inlineStyle: true, - prefix: options.prefix, - skipTests: true, - style: options.style, - flat: true, - viewEncapsulation: 'None', - project: options.name, - standalone: options.standalone, - }); - updateNxComponentTemplate(tree, options); + if (!options.minimal) { + // Create the NxWelcomeComponent + const angularComponentSchematic = wrapAngularDevkitSchematic( + '@schematics/angular', + 'component' + ); + await angularComponentSchematic(tree, { + name: 'NxWelcome', + inlineTemplate: true, + inlineStyle: true, + prefix: options.prefix, + skipTests: true, + style: options.style, + flat: true, + viewEncapsulation: 'None', + project: options.name, + standalone: options.standalone, + }); + updateNxComponentTemplate(tree, options); + } if (options.addTailwind) { await setupTailwindGenerator(tree, { diff --git a/packages/angular/src/generators/application/schema.d.ts b/packages/angular/src/generators/application/schema.d.ts index 80178effbc..c60a3c085f 100644 --- a/packages/angular/src/generators/application/schema.d.ts +++ b/packages/angular/src/generators/application/schema.d.ts @@ -26,4 +26,5 @@ export interface Schema { skipPackageJson?: boolean; standalone?: boolean; rootProject?: boolean; + minimal?: boolean; } diff --git a/packages/angular/src/generators/application/schema.json b/packages/angular/src/generators/application/schema.json index f9b1e0ba07..26bf421988 100644 --- a/packages/angular/src/generators/application/schema.json +++ b/packages/angular/src/generators/application/schema.json @@ -159,6 +159,11 @@ "default": false, "hidden": true, "x-priority": "internal" + }, + "minimal": { + "description": "Generate a Angular app with a minimal setup.", + "type": "boolean", + "default": false } }, "additionalProperties": false, diff --git a/packages/react/src/generators/application/__snapshots__/application.spec.ts.snap b/packages/react/src/generators/application/__snapshots__/application.spec.ts.snap new file mode 100644 index 0000000000..5a2618d399 --- /dev/null +++ b/packages/react/src/generators/application/__snapshots__/application.spec.ts.snap @@ -0,0 +1,107 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`app --minimal should create default application without Nx welcome component 1`] = ` +" +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import styles from './app.module.css'; + + + +export function App() { + + return ( + <> + +