new library public-api.ts file not using component type declared on angular.json's schematics
- 主要言語
- TypeScript
- スター
- 27k
- フォーク
- 11.8k
- 平均マージ
- 14時間 23分
- マージ済み PR(30日)
- 162
説明
### 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_
コントリビューションガイド
調査の方向性
まず、`angular.json` で `@schematics/angular:component` の `type` 設定を使用して `ng generate library foo-library` を再現し、その後、生成された `projects/foo-library/src/lib/foo-library.cmp.ts` と `projects/foo-library/src/public-api.ts` を確認します。`public-api.ts` が `.component` ではなく、設定されたファイル名サフィックスを使用して生成されたコンポーネントをエクスポートすれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- angular, typescript
- 領域
- build-system, cli
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100