SuperAPI AI 工具集

tina-schema-sync

通用与其它

查看项目

更新于 10-15 21:50

技能介绍

用途:在修改 tina/config.ts(新增字段、区块、集合)后,本地重新生成 TinaCMS 产物并提交,配合 Vercel 跳过 tinacms build、产物预提交的混合部署方式。

适用时机:改完 tina/config.ts 后;升级 @tinacms/cli 后;pnpm tina:build 报“Unable to seed”(内容引用了未知区块类型);Vercel 部署成功但新区块不渲染时。

前提:在 .env.local 中准备 TinaCloud 凭据,NEXT_PUBLIC_TINA_CLIENT_ID 与 TINA_TOKEN。若文件不存在,运行 ./scripts/pull-secrets.sh 或从 .env.example 复制并填入 TinaCloud 面板中的值。

步骤:1) source .env.local,用 echo $NEXT_PUBLIC_TINA_CLIENT_ID | head -c 10 与 echo $TINA_TOKEN | head -c 10 确认已设置。2) 运行 npx tinacms dev --noWatch --noTelemetry(带上两个环境变量),等到“TinaCMS Dev Server is active”后停止服务。用 dev 而非 build,是因为 build 需连接 TinaCloud 索引,若内容已引用云端未知区块类型会报“Unable to seed”;dev 可在本地生成产物。3) git status tina/ 确认产物已更新。4) 若新增区块类型,用 grep 在 tina/generated/types.ts 中确认新类型存在。5) git add tina/generated/ tina/tina-lock.json public/admin/ 后用 chore(tina) 提交。tina-lock.json 是 TinaCloud 部署时读取 schema 的文件,不可漏提交。6) git push,TinaCloud 会从提交中读取锁文件并正确索引 schema。

工作方式建议:复杂字段依赖下不保证一次同步成功,出错时定位具体 schema 错误、只修一个集合或字段定义后重跑;先把 tina/config.ts 的改动做本地语义提交,同步成功后再单独提交产物,便于回滚。

排查:报无法 seed 内容时改用 tinacms dev;服务起不来检查凭据,并用 lsof -i :4001、lsof -i :6970 检查端口占用;类型已生成但锁文件没变,确认 tina/config.ts 已保存。推送前核对 client.ts、types.ts、tina-lock.json 均有改动且与 public/admin 一并暂存提交。资料未提供具体价格、兼容平台等更多信息。