Loving Tina? us on GitHub0.0k

文档

学习

v.Latest
Documentation
分离内容仓库
目录

介绍

Tina支持从一个独立的Git仓库获取内容。通过这种方式,您可以继续在“网站仓库”中定义您的Tina配置,但文档将保存在其他地方。

为什么?

您可能出于多种原因想要这样做,例如:

  • 将您的网站代码与内容文件解耦,这样您的提交历史就不会混合内容更新和代码更新
  • 避免必须给予TinaCloud对您网站代码的写入权限(只需给予对您的内容仓库的访问权限)

在本指南中,我们将提到“网站仓库”和“内容仓库”。“网站仓库”是您实际运行网站的地方,而“内容仓库”是您存储Markdown内容的地方

要求

  • 您必须在本地机器上同时检出“内容仓库”和“网站仓库”。
  • 您必须在Tina配置中提供内容仓库的位置(下面会详细介绍)。
  • 在进行更改时,您需要确保已将两个仓库推送到GitHub,并且“内容仓库”的更改优先。
  • 在进行更改时,您需要在网站仓库和内容仓库之间同步tina/中的生成文件(例如tina-lock.json__generated__文件等)

创建网站仓库

我们已经部署了一个基本的起始“网站仓库”,您可以克隆它以开始使用。

git clone git@github.com:tinacms/separate-website-repo.git

“网站仓库”包含NextJS站点和tina配置。

创建内容仓库

要设置“内容仓库”,我们将从一个简单的.mdx文件开始:

mkdir -p ../demo-content-repo/content/pages && touch ../demo-content-repo/content/pages/home.mdx && echo "Hello" >> ../demo-content-repo/content/pages/home.mdx

此命令创建了一个文件夹(demo-content-repo)并在content/pages目录中添加了一个单独的MDX文件,我们将在Tina配置中为page集合使用该目录。

本地开发

在“网站仓库”中,安装项目的依赖项

yarn install

在本地运行项目:

yarn dev

在编辑模式下访问页面

打开http://localhost:3000/admin/index.html

从这里,您可以在tina/config.js中为您的内容模型添加更多字段。访问文档以了解更多关于内容建模的信息。

部署您的内容仓库

接下来,我们将从“内容仓库”创建一个TinaCloud项目

  1. 在您的内容仓库中初始化Git并将其推送到GitHub。
  2. 完成后,为main分支创建一个令牌,或使用*允许所有分支。

切换回您的“网站仓库”并设置一个.env文件以在连接到TinaCloud时使用:

cp .env.example .env

当您运行tinacms build时,它将使用这些凭据连接到TinaCloud而不是本地服务器:

yarn build

管理跨仓库的架构更改

当您修改Tina架构(tina/config.(ts/js))

  1. 运行tinacms build以重新生成文件 - Tina将重新生成文件,如您的tina-lock.json
  2. 提交并推送这些更改到您的网站仓库和内容仓库,以确保跨构建的兼容性

路径配置注意事项

在您的tina/config.(ts/js)中定义集合路径时,避免设置path: ''。因为Tina期望一个相对于文件夹的路径。使用''可能会导致创建新文档时出现错误,因为Tina在保存时会添加一个/,导致无效的GitHub路径。

静态网站生成器兼容性

如果您使用的是Next.js以外的静态网站生成器(SSG),例如Astro。确保您的内容管道忽略内容仓库中的tina/目录。Tina的配置文件不是内容文件,这可能会导致解析错误。

export default defineCollection) {
schema: mySchema,
exclude: ['tina/**/*'],
};

了解更多

要了解更多关于Tina的信息,请查看以下资源:

您可以查看Tina GitHub 仓库 - 欢迎您的反馈和贡献!

上次编辑: June 17, 2025