From 5c94d6222f7ccfc6105a24d5cfc67430c296954c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Fri, 6 May 2022 08:57:20 +0100 Subject: [PATCH] fix(angular): add missing skipImport option to the component generator (#10167) --- docs/generated/packages/angular.json | 5 +++ .../__snapshots__/component.spec.ts.snap | 19 +++++++++ .../generators/component/component.spec.ts | 41 +++++++++++++++++++ .../src/generators/component/component.ts | 2 +- .../src/generators/component/schema.d.ts | 1 + .../src/generators/component/schema.json | 5 +++ 6 files changed, 72 insertions(+), 1 deletion(-) diff --git a/docs/generated/packages/angular.json b/docs/generated/packages/angular.json index 5186416c901fc..ddcf256d8014f 100644 --- a/docs/generated/packages/angular.json +++ b/docs/generated/packages/angular.json @@ -319,6 +319,11 @@ "description": "Create the new files at the top level of the current project.", "default": false }, + "skipImport": { + "type": "boolean", + "description": "Do not import this component into the owning NgModule.", + "default": false + }, "selector": { "type": "string", "format": "html-selector", diff --git a/packages/angular/src/generators/component/__snapshots__/component.spec.ts.snap b/packages/angular/src/generators/component/__snapshots__/component.spec.ts.snap index c52f65f44851f..ff824e58db2e4 100644 --- a/packages/angular/src/generators/component/__snapshots__/component.spec.ts.snap +++ b/packages/angular/src/generators/component/__snapshots__/component.spec.ts.snap @@ -100,6 +100,25 @@ export class ExampleComponent implements OnInit { " `; +exports[`component Generator should create the component correctly and not export it when "--skip-import=true" 1`] = ` +"import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'example', + templateUrl: './example.component.html', + styleUrls: ['./example.component.css'] +}) +export class ExampleComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} +" +`; + exports[`component Generator should create the component correctly but not export it when no entry point exists 1`] = ` "import { Component, OnInit } from '@angular/core'; diff --git a/packages/angular/src/generators/component/component.spec.ts b/packages/angular/src/generators/component/component.spec.ts index 9c95b8a46633d..a92ba9d814489 100644 --- a/packages/angular/src/generators/component/component.spec.ts +++ b/packages/angular/src/generators/component/component.spec.ts @@ -83,6 +83,47 @@ describe('component Generator', () => { ); }); + it('should create the component correctly and not export it when "--skip-import=true"', async () => { + // ARRANGE + const tree = createTreeWithEmptyWorkspace(2); + addProjectConfiguration(tree, 'lib1', { + projectType: 'library', + sourceRoot: 'libs/lib1/src', + root: 'libs/lib1', + }); + tree.write( + 'libs/lib1/src/lib/lib.module.ts', + ` + import { NgModule } from '@angular/core'; + + @NgModule({ + declarations: [], + exports: [] + }) + export class LibModule {}` + ); + tree.write('libs/lib1/src/index.ts', ''); + + // ACT + await componentGenerator(tree, { + name: 'example', + project: 'lib1', + skipImport: true, + }); + + // ASSERT + const componentSource = tree.read( + 'libs/lib1/src/lib/example/example.component.ts', + 'utf-8' + ); + expect(componentSource).toMatchSnapshot(); + + const indexSource = tree.read('libs/lib1/src/index.ts', 'utf-8'); + expect(indexSource).not.toContain( + `export * from "./lib/example/example.component"` + ); + }); + it('should create the component correctly but not export it when no entry point exists', async () => { // ARRANGE const tree = createTreeWithEmptyWorkspace(2); diff --git a/packages/angular/src/generators/component/component.ts b/packages/angular/src/generators/component/component.ts index 98836b551eb4c..02387b91dd4ed 100644 --- a/packages/angular/src/generators/component/component.ts +++ b/packages/angular/src/generators/component/component.ts @@ -47,7 +47,7 @@ function checkPathUnderProjectRoot(tree: Tree, schema: Partial) { } function exportComponent(tree: Tree, schema: Schema) { - if (!schema.export) { + if (!schema.export || schema.skipImport) { return; } diff --git a/packages/angular/src/generators/component/schema.d.ts b/packages/angular/src/generators/component/schema.d.ts index 1723d412288c4..a0d15749d6ee2 100644 --- a/packages/angular/src/generators/component/schema.d.ts +++ b/packages/angular/src/generators/component/schema.d.ts @@ -11,6 +11,7 @@ export interface Schema { skipTests?: boolean; type?: string; flat?: boolean; + skipImport?: boolean; selector?: string; module?: string; skipSelector?: boolean; diff --git a/packages/angular/src/generators/component/schema.json b/packages/angular/src/generators/component/schema.json index b6b1c73b08f40..f51dd8efa4e2f 100644 --- a/packages/angular/src/generators/component/schema.json +++ b/packages/angular/src/generators/component/schema.json @@ -81,6 +81,11 @@ "description": "Create the new files at the top level of the current project.", "default": false }, + "skipImport": { + "type": "boolean", + "description": "Do not import this component into the owning NgModule.", + "default": false + }, "selector": { "type": "string", "format": "html-selector",