跳到主要内容

构建管线

构建管线

bolt check 与 bolt build 是同一条管线。工作区没有 Vite 配置,也没有构建脚本:编译器从文件树中发现各个角色,并负责每个阶段。

阶段

bolt check 运行每个阶段,并一次报告所有错误:

  1. 发现——遍历 src/,把每个 + 文件匹配到其角色,并拒绝未知文件、放错位置的角色与不合规的名称
  2. 名称——写出名称索引 .norbital/names.ts,把每个名称映射到其声明的 typeof
  3. 打包——为访客隔离环境打包租户代码,为客户端打包页面
  4. 求值——在时钟冻结的隔离环境中对声明求值两次;两次结果不同的声明会被拒绝
  5. 清单——根据声明构建纯数据的清单
  6. 种子数据——按各自的集合解码种子数据行
  7. 数据库结构——由清单推导数据库结构
  8. 类型——对工作区运行 tsc 与 svelte-check
  9. doctor——静态规则,包括布局规则

制品

bolt build 写出 .norbital/artifact/——清单、数据库结构、访客包、客户端包、资源与技能——以及旁边的种子数据包:base,以及提供种子库时的 sample。宿主只运行制品,从不构建源码。

数据库结构计划

激活时,宿主把已应用的数据库结构与清单比较,并在一个事务中分步骤应用一个计划:新增、回填、校验、破坏性变更。校验失败时会指出约束及违规的行。破坏性步骤只有在 bolt dev 中才会自动接受;bolt start 需要 --accept。

开发循环

bolt dev 进行增量重建、重新求值、应用计划,并在大约两秒内切换正在运行的工作区;某一步失败时,上一个版本继续提供服务。