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 0710122358fe2..072f5e11f8e21 100644 --- a/packages/angular/src/generators/application/__snapshots__/application.spec.ts.snap +++ b/packages/angular/src/generators/application/__snapshots__/application.spec.ts.snap @@ -268,6 +268,9 @@ exports[`app --project-name-and-root-format=derived should generate correctly wh "buildTarget": "my-dir-my-app:build", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, "serve": { "configurations": { "development": { @@ -287,6 +290,15 @@ exports[`app --project-name-and-root-format=derived should generate correctly wh "staticFilePath": "dist/apps/my-dir/my-app/browser", }, }, + "test": { + "executor": "@nx/jest:jest", + "options": { + "jestConfig": "apps/my-dir/my-app/jest.config.ts", + }, + "outputs": [ + "{workspaceRoot}/coverage/{projectRoot}", + ], + }, }, } `; @@ -319,6 +331,9 @@ exports[`app --project-name-and-root-format=derived should generate correctly wh "testingType": "e2e", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, }, } `; @@ -472,6 +487,9 @@ exports[`app --project-name-and-root-format=derived should generate correctly wh "buildTarget": "my-app:build", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, "serve": { "configurations": { "development": { @@ -491,6 +509,15 @@ exports[`app --project-name-and-root-format=derived should generate correctly wh "staticFilePath": "dist/apps/my-app/browser", }, }, + "test": { + "executor": "@nx/jest:jest", + "options": { + "jestConfig": "apps/my-app/jest.config.ts", + }, + "outputs": [ + "{workspaceRoot}/coverage/{projectRoot}", + ], + }, }, } `; @@ -523,6 +550,9 @@ exports[`app --project-name-and-root-format=derived should generate correctly wh "testingType": "e2e", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, }, } `; @@ -971,6 +1001,9 @@ exports[`app nested should create project configs 1`] = ` "buildTarget": "my-app:build", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, "serve": { "configurations": { "development": { @@ -990,6 +1023,15 @@ exports[`app nested should create project configs 1`] = ` "staticFilePath": "dist/my-dir/my-app/browser", }, }, + "test": { + "executor": "@nx/jest:jest", + "options": { + "jestConfig": "my-dir/my-app/jest.config.ts", + }, + "outputs": [ + "{workspaceRoot}/coverage/{projectRoot}", + ], + }, }, } `; @@ -1022,6 +1064,9 @@ exports[`app nested should create project configs 2`] = ` "testingType": "e2e", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, }, } `; @@ -1088,6 +1133,9 @@ exports[`app not nested should create project configs 1`] = ` "buildTarget": "my-app:build", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, "serve": { "configurations": { "development": { @@ -1107,6 +1155,15 @@ exports[`app not nested should create project configs 1`] = ` "staticFilePath": "dist/my-app/browser", }, }, + "test": { + "executor": "@nx/jest:jest", + "options": { + "jestConfig": "my-app/jest.config.ts", + }, + "outputs": [ + "{workspaceRoot}/coverage/{projectRoot}", + ], + }, }, } `; @@ -1139,6 +1196,9 @@ exports[`app not nested should create project configs 2`] = ` "testingType": "e2e", }, }, + "lint": { + "executor": "@nx/eslint:lint", + }, }, } `; diff --git a/packages/angular/src/generators/application/application.spec.ts b/packages/angular/src/generators/application/application.spec.ts index 4a2f17f38c387..65304ca4e3500 100644 --- a/packages/angular/src/generators/application/application.spec.ts +++ b/packages/angular/src/generators/application/application.spec.ts @@ -532,12 +532,18 @@ describe('app', () => { describe('eslint', () => { it('should add lint target', async () => { await generateApp(appTree, 'my-app', { linter: Linter.EsLint }); - expect( - readProjectConfiguration(appTree, 'my-app').targets.lint - ).toMatchInlineSnapshot(`undefined`); - expect( - readProjectConfiguration(appTree, 'my-app-e2e').targets.lint - ).toMatchInlineSnapshot(`undefined`); + expect(readProjectConfiguration(appTree, 'my-app').targets.lint) + .toMatchInlineSnapshot(` + { + "executor": "@nx/eslint:lint", + } + `); + expect(readProjectConfiguration(appTree, 'my-app-e2e').targets.lint) + .toMatchInlineSnapshot(` + { + "executor": "@nx/eslint:lint", + } + `); }); it('should add valid eslint JSON configuration which extends from Nx presets', async () => { @@ -1256,7 +1262,7 @@ async function generateApp( unitTestRunner: UnitTestRunner.Jest, linter: Linter.EsLint, standalone: false, - addPlugin: true, + addPlugin: false, ...options, }); } diff --git a/packages/angular/src/generators/application/lib/normalize-options.ts b/packages/angular/src/generators/application/lib/normalize-options.ts index 75bc633e6f495..c86e4d2043b22 100644 --- a/packages/angular/src/generators/application/lib/normalize-options.ts +++ b/packages/angular/src/generators/application/lib/normalize-options.ts @@ -26,7 +26,7 @@ export async function normalizeOptions( }); options.rootProject = appProjectRoot === '.'; options.projectNameAndRootFormat = projectNameAndRootFormat; - options.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false'; + options.addPlugin ??= process.env.NX_ADD_PLUGINS === 'true'; const e2eProjectName = options.rootProject ? 'e2e' : `${appProjectName}-e2e`; const e2eProjectRoot = options.rootProject ? 'e2e' : `${appProjectRoot}-e2e`; diff --git a/packages/angular/src/generators/library/lib/normalize-options.ts b/packages/angular/src/generators/library/lib/normalize-options.ts index e52c98622c386..11e4843071b98 100644 --- a/packages/angular/src/generators/library/lib/normalize-options.ts +++ b/packages/angular/src/generators/library/lib/normalize-options.ts @@ -73,6 +73,7 @@ export async function normalizeOptions( standaloneComponentName: `${ names(projectNames.projectSimpleName).className }Component`, + addPlugin: options.addPlugin ?? process.env.NX_ADD_PLUGINS === 'true', }; const { diff --git a/packages/angular/src/generators/library/lib/normalized-schema.ts b/packages/angular/src/generators/library/lib/normalized-schema.ts index 5524bc66ae996..642ace7308649 100644 --- a/packages/angular/src/generators/library/lib/normalized-schema.ts +++ b/packages/angular/src/generators/library/lib/normalized-schema.ts @@ -38,6 +38,7 @@ export interface NormalizedSchema { parsedTags: string[]; ngCliSchematicLibRoot: string; standaloneComponentName: string; + addPlugin?: boolean; }; componentOptions: { name: string; diff --git a/packages/angular/src/generators/library/library.spec.ts b/packages/angular/src/generators/library/library.spec.ts index 49ee4808a02f1..775baa85ceb3e 100644 --- a/packages/angular/src/generators/library/library.spec.ts +++ b/packages/angular/src/generators/library/library.spec.ts @@ -173,6 +173,7 @@ describe('lib', () => { const json = readProjectConfiguration(tree, 'my-lib'); expect(json.root).toEqual('my-lib'); expect(json.targets.build).toBeDefined(); + expect(json.targets.test).toBeDefined(); }); it('should not generate a module file and index.ts should be empty', async () => { diff --git a/packages/angular/src/generators/library/library.ts b/packages/angular/src/generators/library/library.ts index 871e21875d014..a2c8c95d3e52f 100644 --- a/packages/angular/src/generators/library/library.ts +++ b/packages/angular/src/generators/library/library.ts @@ -134,6 +134,7 @@ async function addUnitTestRunner( projectRoot: options.projectRoot, skipPackageJson: options.skipPackageJson, strict: options.strict, + addPlugin: options.addPlugin, }); } } diff --git a/packages/angular/src/generators/library/schema.d.ts b/packages/angular/src/generators/library/schema.d.ts index 242fd8e48ef57..d6c3017a2c27a 100644 --- a/packages/angular/src/generators/library/schema.d.ts +++ b/packages/angular/src/generators/library/schema.d.ts @@ -40,4 +40,5 @@ export interface Schema { skipTests?: boolean; selector?: string; skipSelector?: boolean; + addPlugin?: boolean; }