SuperAPI AI 工具集

reference-compiler-cli

通用与其它

查看项目

更新于 10-16 01:15

技能介绍

这是针对 Angular 编译器 CLI(ngtsc)的架构说明技能,适用于计划修改或理解 packages/compiler-cli 代码的场景。

用途:解释该包的心智模型与架构。它是 TypeScript 编译器 tsc 的包装器,用 Angular 特有能力扩展 tsc,核心目标是把 @Component、@Directive、@Pipe 等装饰器编译为类上的静态属性(Ivy 指令,如 static ɵcmp = ...),并进行模板类型检查与 AOT 编译。

主要能力与心智模型:编译器是惰性、增量、部分编译的流水线。NgtscProgram 包装标准 ts.Program,作为标准工具链的替代品。每个带 Angular 装饰器的类被视为一个 Trait,通过状态机管理:Pending(已检测未处理)、Analyzed(已抽取元数据、解析模板但未链接依赖)、Resolved(已解析模板中的指令/管道、处理导入循环)、Skipped(非 Angular 类)。分析按需进行,仅在请求诊断或准备 emit 时触发。编译器生成中间 Output AST(o.Expression),在 emit 阶段翻译为 TypeScript AST。

关键子系统:ngtsc/core 的 NgtscProgram 与 NgCompiler 负责编排分析、解析、类型检查与 emit;ngtsc/transform 的 TraitCompiler 管理 Trait 生命周期并委派给 DecoratorHandler;ngtsc/annotations 中 ComponentDecoratorHandler 最复杂,负责抽取元数据、解析模板、解析指令管道并生成 ɵcmp;ngtsc/typecheck 的 TemplateTypeChecker 生成 Type Check Blocks(TCB)供 tsc 检查模板逻辑;ngtsc/metadata 与 ngtsc/scope 的 MetadataReader、ScopeRegistry 读取元数据并确定组件编译作用域;ngtsc/transform 的 ivyTransformFactory、IvyCompilationVisitor、IvyTransformationVisitor 负责把 Output AST 转为 TypeScript AST、注入静态 ɵ 字段并移除原装饰器。

编译阶段:构造(创建 NgCompiler 与各注册表)、分析(扫描文件、抽取元数据、解析模板,不跨文件解析)、解析(链接模板与指令管道、处理导入循环)、类型检查(生成 TCB 并获取 TypeScript 诊断)、emit(创建 ivyTransformFactory、调用 TS emit、注入编译后的 Ivy 指令)。

限制:资料未提供安装命令、收费、价格、平台与具体使用步骤,也未给出除上述文件位置和已提及字段外的更多实现细节;这些内容暂未提供。