构建管线
构建管线
bolt check 与 bolt build 是同一条管线。工作区没有 Vite 配置,也没有构建脚本:编译器从文件树中发现各个角色,并负责每个阶段。
阶段
bolt check 运行每个阶段,并一次报告所有错误:
- 发现——遍历
src/,把每个+文件匹配到其角色,并拒绝未知文件、放错位置的角色与不合规的名称 - 名称——写出名称索引
.norbital/names.ts,把每个名称映射到其声明的typeof - 打包——为访客隔离环境打包租户代码,为客户端打包页面
- 求值——在时钟冻结的隔离环境中对声明求值两次;两次结果不同的声明会被拒绝
- 清单——根据声明构建纯数据的清单
- 种子数据——按各自的集合解码种子数据行
- 数据库结构——由清单推导数据库结构
- 类型——对工作区运行 tsc 与 svelte-check
- doctor——静态规则,包括布局规则
制品
bolt build 写出 .norbital/artifact/——清单、数据库结构、访客包、客户端包、资源与技能——以及旁边的种子数据包:base,以及提供种子库时的 sample。宿主只运行制品,从不构建源码。
数据库结构计划
激活时,宿主把已应用的数据库结构与清单比较,并在一个事务中分步骤应用一个计划:新增、回填、校验、破坏性变更。校验失败时会指出约束及违规的行。破坏性步骤只有在 bolt dev 中才会自动接受;bolt start 需要 --accept。
开发循环
bolt dev 进行增量重建、重新求值、应用计划,并在大约两秒内切换正在运行的工作区;某一步失败时,上一个版本继续提供服务。