单独的内容仓库现已在TinaCloud上线
TinaCloud项目现在可以绑定两个GitHub仓库:一个包含您的Tina架构和应用代码的生成器仓库,以及一个包含您的markdown、MDX和媒体的单独内容仓库。
简而言之: 一个TinaCloud项目,两个仓库。编辑者将内容提交到内容仓库,工程师将代码提交到生成器仓库,而TinaCloud保持一切连接。它是仪表板中的一个切换选项,今天即可用于新项目和现有项目。
为什么要拆分您的仓库?
许多团队要求这样做,他们通常出于以下几个原因之一:
- 解耦的提交历史。 编辑者每天提交数十个小的内容编辑。工程师提交一次或两次。将它们保存在不同的仓库中可以保持每个仓库的历史记录可读。
- 权限卫生。 编辑者获得内容仓库的写入权限,而无需接触应用代码。
- 扩展性。 随着网站的增长,内容量增长得比代码快得多。拆分仓库可以保持生成器仓库的精简,因此无论内容库多大,克隆、CI构建和代码审查都能保持快速。
- 多站点重用。 单个内容仓库可以为多个生成器提供支持,例如区域网站、面向合作伙伴的变体、按语言提供翻译内容的国际化网站,或共享一个真实来源的文档和营销网站。
直到现在,解决方法是创建两个TinaCloud项目,并通过tina/meta.json文件将它们连接起来。该模式有效,但伴随着同步问题、重复的Tina锁定文件以及可能过时的搜索结果。单独的内容仓库用一个能够本地理解两个仓库的单一项目取代了它。
它是如何工作的
从编辑者的角度来看,没有任何变化。他们打开仪表板,编辑、保存并提交审核,完全如往常一样。在幕后:
- 架构从生成器仓库加载。它从不从内容仓库读取。
- 通过Tina的编辑工作流程创建的编辑分支和拉取请求是在内容仓库上进行的。
- 媒体上传到内容仓库。
- 每次内容仓库推送时重新索引搜索,因此无论哪个仓库发生变化,结果都保持最新。
以下是各自存放的内容:
项目 | 生成器仓库 | 内容仓库 |
|---|---|---|
| ✅ | ❌ |
| ✅ | ❌ |
应用代码 (Next.js / Astro / 等) | ✅ | ❌ |
| ❌ | ✅ |
媒体 (图片、视频等) | ❌ | ✅ |
从Tina UI创建的编辑分支 / PRs | ❌ | ✅ |
设置新项目
该选项就在创建项目流程中:
- 从TinaCloud仪表板中,点击创建项目。
- 像往常一样选择您的生成器仓库。
- 打开使用单独的内容仓库。
- 从列表中选择内容仓库。
- 点击创建。

TinaCloud会自动在两个仓库上安装必要的GitHub webhooks。内容仓库不需要tina/文件夹。仪表板会从头开始索引它。
转换现有项目
已经有一个单仓库项目?您可以在不重新创建任何内容的情况下转换它:
- 打开项目的配置页面。
- 找到内容仓库部分。
- 打开使用单独的内容仓库。
- 选择内容仓库并确认。

TinaCloud会索引内容仓库的默认分支,并将编辑工作流程操作重新路由到它。该切换选项也可以反向工作,因此您可以稍后恢复到单仓库。
本地开发
在本地,两个仓库并排放在磁盘上。使用新的localContentPath字段将您的配置指向内容仓库:
import { defineConfig } from 'tinacms';export default defineConfig({// ...您的现有配置localContentPath: '../my-content-repo',});
然后将两个仓库作为兄弟仓库检出,并从生成器仓库运行您的常规开发命令:
parent/├── my-generator-repo/│ └── tina/│ └── config.tsx└── my-content-repo/└── content/└── posts/└── hello.mdx
tinacms dev会监视内容仓库的文件以及生成器的架构。编辑内容文件会热重载管理UI,编辑您的架构会重新生成它,而生成的工件只会出现在生成器仓库中。
localContentPath仅用于本地开发。在生产环境中,TinaCloud通过GitHub从内容仓库读取内容,无论此设置如何。
已经使用旧的双项目模式?
如果您通过两个TinaCloud项目连接tina/meta.json的旧方式设置了内容仓库,迁移很快:
- 保留指向您的生成器仓库的项目。
- 在其设置中打开使用单独的内容仓库并选择您现有的内容仓库。
- 删除内容仓库的TinaCloud项目;它不再使用。
- 可选清理:删除
tina/meta.json和内容仓库中任何过时的tina/__generated__/文件夹。没有东西再读取它们。
文档指南涵盖了更详细的迁移内容,以及构建触发器、故障排除和静态网站生成器的考虑。
试试看
单独的内容仓库现在已在TinaCloud上线。为测试项目切换开关,看看它如何适合您的团队。
如果有任何不对劲的地方,请告诉我们。打开一个问题,或加入Discord与我们分享您的发现。
TinaCMS团队 🦙