@diez/compiler-core
这个软件包提供了基础类,可用于从Diez项目将编译器构建到任何目标语言,框架,或平台. 依赖 @diez/compiler-core 注册 CLI 命令 diez compile --target <target-name>,用于编译给定编译器目标(如. android, (中文(简体) ), ios,或 web进入 build 目录.
汇编一般分两个阶段进行.
第一阶段:分析
编译器核心本身几乎没有什么要求;它可以针对任何具有这种近似形状的TypeScript项目执行:
project-root
├── package.json
├── src
│ └── index.ts
└── tsconfig.json
运行 yarn create diez 为您设置一个带有此结构的项目.
在编译时间 diez compile 命令首先解析导出的每一组件的 TypeScript AST src/index.ts,然后递归地描述其组件属性。 例如,鉴于这些内容:
import {Color} from '@diez/prefabs';
class Palette {
red = Color.rgb(255, 0, 0);
}
export class DesignLanguage {
palette = new Palette();
}
解析器将构建基于导出组件的已键入的抽象树 DesignLanguage。因为 Color 财务报告和审定财务报表 Palette 连续依赖 DesignLanguage,它们也会得到处理。 由此产生的抽象树是下一个汇编阶段的主要投入.
第二阶段:汇编
编译阶段为所请求的目标平台生成本土源代码. 这一过程通常涉及从代码模板中生成设计符号元件类,从中集成额外的功能和特性 本地绑定,转录文件资产和其他依赖性,最终将构建的文物写入磁盘.
为方便起见,编译器核心包括: 抽象编译器类。虽然这一类可能提供有用的节省时间的抽象,但在为新的Diez编译器目标建立支持时不需要使用它.