发布与多平台

本页讲 ttsc 的发布管线、多平台二进制构建、版本管理、以及 tarball 验证流程。命令以根 package.json scripts 与 .codex/skills/typescript-go-sync/SKILL.md 为准。

多平台构建

pnpm buildscripts/build-platforms.cjs)构建全部七个平台包,每个携带原生 ttsc/ttscserver/ttscgraph 二进制与修剪过的 Go SDK(见 平台二进制包)。pnpm build:currentscripts/build-current.cjs)只构建当前平台,开发与测试用。

构建顺序约束:平台包必须在 @ttsc/graph 前构建(graph 构建会跑带 typia 的 ttsc,需要原生二进制)。

发布 scripts

package.json 的发布相关 scripts:

script作用
releasebumpp -r(递归 bump 版本)
package:latestpnpm build + package:latest:publish
package:latest:publish发布全部包(latest tag、provenance),ttsc 最后
package:nextbash next.bash(next tag 发布)
package:tgznode experimental/tarballs/index.ts(打 tarball)

package:latest:publishpnpm --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)。流程:

pnpm package:tgz            # 完整 release-rehearsal tarball
# 或单平台快速循环:
TTSC_TARBALLS_CURRENT=1 pnpm package:tgz

把产出 tarball 装进消费者 checkout(如 ../typia),跑会触碰新 API 的 typia 测试。experimental/tarballs/index.ts 流程是 CI 用的;--current / TTSC_TARBALLS_CURRENT=1 只打当前平台包。

typescript-go 版本 bump

bump tsgo 是一类特殊发布前工作(完整步骤见 shim 审计与同步):

  1. 改所有 shim/*/go.modpackages/ttsc/go.modrequire github.com/microsoft/typescript-go 到新伪版本(保持一致),刷新各 go.sum
  2. 重跑 go run ./tools/gen_shims 重新生成 surface.go
  3. 复查手写 shim.goextra-shim.json,构建 packages/ttsc 修 fallout。
  4. pnpm --filter ttsc shim:audit -fix 重新生成枚举补全。

VS Code 扩展发布

@ttsc/vscode 有单独的 marketplace 发布脚本:scripts/publish-vscode.shscripts/publish-vscode-marketplace.shscripts/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 的发布约束)。

接下来