Add interface to cover UpdateRecorderBase's "apply" method
- 主要语言
- TypeScript
- 星标
- 27k
- 派生
- 11.8k
- 平均合并
- 14 小时 23 分钟
- 30 天内合并 PR
- 162
描述
# 🚀 Feature request
### Command (mark with an `x`)
```
- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [x] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
```
### Description
Currently when writing schematics, the `HostTree` expects an `UpdateRecorderBase` for it's `commitUpdate(...)` function. This sharply limits creating custom schematic helpers, since any change needs to be done with an actual `UpdateRecorderBase`.
### Describe the solution you'd like
Include a new `UpdateRecord` interface (however you want to call it) that outlines the `UpdateRecorderBase`'s `apply()` function and remove the need for the `UpdateRecorderBase` specifically to be used with the `HostTree.commitUpdate(...)`
I have no problems cloning the repo and making the changes myself, but I would prefer some discussion around the subject to make sure it's in-line with the rest of the schematics implementations.
### Describe alternatives you've considered
I looked into implementing my own `TreeInterface`, but the `HostTree` I would base it on uses a number of "backend" specific functionality that is not exported. Not to mention it would be incredibly tedious to re-implement this very basic class, when we are only trying to extend how an update occurs against the `Tree`.
### Links
[HostTree](https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/schematics/src/tree/host-tree.ts)
[UpdateRecorderBase](https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/schematics/src/tree/recorder.ts)
[UpdateRecorder](https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/schematics/src/tree/interface.ts)
贡献指南
调研方向
Start by reading packages/angular_devkit/schematics/src/tree/host-tree.ts, recorder.ts, and interface.ts, focusing on HostTree.commitUpdate(...) and UpdateRecorderBase.apply(). Review the generate command's schematics usage to understand the public API boundary. Done means a new update interface can be used by commitUpdate(...) without requiring UpdateRecorderBase specifically.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- typescript
- 领域
- cli, tooling
- Issue 类型
- 功能
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100