angular / angular/angular-cli

new library public-api.ts file not using component type declared on angular.json's schematics

Offen
#26,981 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: @schematics/angular freq1: low severity3: broken type: bug/fix
Vorherrschende Sprache
TypeScript
Sterne
27k
Forks
11.8k
Ø Merge
14 Std. 23 Min.
Gemergte PRs (30 T.)
162

Beschreibung

### Which @angular/* package(s) are the source of the bug?

Don't known / other

### Is this a regression?

No

### Description

When I create a new library the default component inside of the lib folder takes its type from the component schematic declared on angular.json. If for example my angular.json looks like this:
```
{
//...
"newProjectRoot": "projects",
//...
"schematics": {
"@schematics/angular:application": {
"style": "scss",
"inlineTemplate": true,
"inlineStyle": true,
"ssr": false
},
"@schematics/angular:component": {
"changeDetection": "OnPush",
"type": "Cmp",
"inlineStyle": true,
"inlineTemplate": true,
"style": "scss"
}
}
}
```

After creating a library using `ng generate library foo-library`, the new library includes an empty dummy `FooLibraryCmp` inside the `projects/foo-library/src/lib/foo-library.cmp.ts`. However, the contents of `projects/foo-library/src/public-api.ts` look like this:

```
/*
* Public API Surface of foo-library
*/

export * from './lib/foo-library.service';
export * from './lib/foo-library.component'; // uses .component instead of .cmp
```

### Please provide a link to a minimal reproduction of the bug

_No response_

### Please provide the exception or error you saw

_No response_

### Please provide the environment you discovered this bug in (run `ng version`)

```true
Angular CLI: 17.1.1
Node: 18.18.0
Package Manager: npm 9.6.6
OS: win32 x64

Angular: 17.1.1
... animations, cli, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, platform-server
... router, ssr

Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1701.1
@angular-devkit/build-angular 17.1.1
@angular-devkit/core 17.1.1
@angular-devkit/schematics 17.1.1
@schematics/angular 17.1.1
ng-packagr 17.1.2
rxjs 7.8.1
typescript 5.2.2
zone.js 0.14.3
```

### Anything else?

_No response_

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, `ng generate library foo-library` mit der Einstellung `@schematics/angular:component` `type` in `angular.json` nachzustellen, und untersuche anschließend die generierten Dateien `projects/foo-library/src/lib/foo-library.cmp.ts` und `projects/foo-library/src/public-api.ts`. Erledigt ist es, wenn `public-api.ts` die generierte Komponente mit dem konfigurierten Dateinamenssuffix statt mit `.component` exportiert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
build-system, cli
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.