3-启动代码生成
类型生成
运行脚本
代码生成脚本将会为你执行以下操作
- 将创建
./data_cleaner_ci_generated/
目录和./user_code/
符号链接目录。这两个目录已被.gitignore
排除,不会被代码管理。 - 将在
./data_cleaner_ci_generated/
目录中执行以下操作:- 生成配置文件并保存到 用户家目录 的配置中,然后将配置文件 符号链接 至
./data_cleaner_ci_generated/config.json
,以便进行 TypeScript 类型检查。 - 根据配置文件内容,在
./data_cleaner_ci_generated
目录下生成数仓中的数据类型和接口 API。
- 生成配置文件并保存到 用户家目录 的配置中,然后将配置文件 符号链接 至
- 将创建私人代码目录
$HOME/.libian/crawler/data_cleaner_ci/user_code
并将其 符号链接 至./user_code/
。- 以便进行 TypeScript 类型检查。
- 其他公共脚本需要从
./user_code/
目录中导入类型,以免私人代码中的类型名称直接被公共代码使用。
在设置好数据仓库后,执行以下命令以全量数据生成数仓的 API 代码:
shell
deno task init:code_gen
init:code_gen
命令详情参考:
shell
deno task init:code_gen --help
txt
Help for code_gen.ts:
-----------------------------------------
常用参数:
--help
显示帮助。
--skip-existed
跳过已经生成的类型文件。
如果你确信 jsonata_tampletes 没有更改、garbage 表只新增不修改,
那么你可以使用此选项节省大量时间。
否则,你可以不启用此选项,脚本也会“局部更新式”的修改已存在的类型文件,
只是全量计算将会耗费大量时间。
--debugopt-logtime
输出时间花费。
--only-gen-nocodb
只生成 nocodb mate 的类型文件。
-----------------------------------------
不建议使用的内部参数,建议只在开发调试时使用:
--no-network
不使用任何远程仓库的数据,仅使用本地缓存来类型生成。
本地缓存位于 ./data_cleaner_ci_generated/.cache_by_id 中。
--only-gen-batches-union-merge-file
只生成 index.ts 的联合类型声明文件。不生成批次数据类型文件。
--high-water-mark
原始数据的 batch 会缓存在队列中,若队列未满则会在 timer 中异步继续加载。
此值为队列的长度限制。默认值为 0。设置为 0 以禁用队列。
该选项不建议修改,因为队列会导致更大的内存使用。
--batch-size
覆盖设置每 batch 的最大长度。默认值 100,也可以在 ./data_cleaner_ci_generated/config.json 中的 **.batch_size 设置。
如果设置过高的值可能导致 quicktype 子进程 OOM 。
shell
# 跳过已存在的 batch 类型生成,以便只生成增量数据的类型,非常节省时间。
# 但是要注意,如果你的 jsonata_template 改变,存量数据的 jsonata 转换输出会发生变化,请确保你的旧数据不受巨大影响时才能 --skip-existed。
deno task init:code_gen --skip-existed
检查结果
完成后,初始化工作就已经完成。然而,如果您需要适配并运行 general_data_process
目录下的公用脚本,您需要手动处理 TypeScript 类型导入。
您可以通过运行以下命令,检查生成的类型是否满足公开脚本的类型推断,并运行测试:
shell
deno tasks step:check