发布与多平台
本页讲 ttsc 的发布管线、多平台二进制构建、版本管理、以及 tarball 验证流程。命令以根 package.json scripts 与 .codex/skills/typescript-go-sync/SKILL.md 为准。
多平台构建
pnpm build(scripts/build-platforms.cjs)构建全部七个平台包,每个携带原生 ttsc/ttscserver/ttscgraph 二进制与修剪过的 Go SDK(见 平台二进制包)。pnpm build:current(scripts/build-current.cjs)只构建当前平台,开发与测试用。
构建顺序约束:平台包必须在 @ttsc/graph 前构建(graph 构建会跑带 typia 的 ttsc,需要原生二进制)。
发布 scripts
根 package.json 的发布相关 scripts:
package:latest:publish 用 pnpm --filter 先发其余包(--filter=!ttsc),再单独发 ttsc——保证消费者拉 ttsc 时它的 workspace 依赖已发布。
版本管理
工作区用统一版本(根 0.16.6,各包跟随)。bumpp -r 递归 bump。catalog(pnpm-workspace.yaml)固定 typescript: 7.0.1-rc(tsgo)与 ts-legacy: npm:typescript@~6.0.3(factory 奇偶 oracle 与少数 legacy 工具用)。
tarball 验证(shim 变更必做)
一次 shim 变更只有当下游插件能编译并通过测试才算证实(.codex/skills/typescript-go-sync/SKILL.md)。流程:
把产出 tarball 装进消费者 checkout(如 ../typia),跑会触碰新 API 的 typia 测试。experimental/tarballs/index.ts 流程是 CI 用的;--current / TTSC_TARBALLS_CURRENT=1 只打当前平台包。
typescript-go 版本 bump
bump tsgo 是一类特殊发布前工作(完整步骤见 shim 审计与同步):
- 改所有
shim/*/go.mod与packages/ttsc/go.mod的require github.com/microsoft/typescript-go到新伪版本(保持一致),刷新各go.sum。 - 重跑
go run ./tools/gen_shims重新生成surface.go。 - 复查手写
shim.go与extra-shim.json,构建packages/ttsc修 fallout。 pnpm --filter ttsc shim:audit -fix重新生成枚举补全。
VS Code 扩展发布
@ttsc/vscode 有单独的 marketplace 发布脚本:scripts/publish-vscode.sh、scripts/publish-vscode-marketplace.sh、scripts/assert-vscode-package.cjs。
CI 发布
.github/workflows/release.yml 处理 CI 发布。package:latest:publish 用 --provenance 生成 npm provenance。
不变量
- 平台包在
@ttsc/graph前构建。 ttsc在其 workspace 依赖之后发布。- shim 变更必须经 tarball 装进真实消费者验证。
- tsgo 版本逐 shim 模块固定且一致。
维护者提示
- 别只在本地构建就发布 shim 变更——必须 tarball + 消费者验证。
- Legacy TS 大版本 bump 要同步基准夹具的
legacy分支(见 基准测试)。 - CI 部署不要未经用户批准就加(
.codex/skills的发布约束)。