Loving Tina? us on GitHub0.0k
v.Latest
Documentation

应用文件夹外的内容

在此页面上

介绍

在某些项目中,您的内容文件位于安装TinaCMS的应用程序文件夹之外。例如,您的Next.js应用程序可能位于packages/website/中,而您的markdown内容位于顶级的content/文件夹中。

TinaCMS通过localContentPath配置选项支持这种布局。本指南将介绍如何设置它。

如果您的内容位于一个完全独立的Git仓库中,请参阅独立内容仓库指南。

示例结构

my-monorepo/
├── content/ ← 您的markdown/MDX内容
│ ├── tina/ ← 必需(TinaCMS在此处写入生成的文件)
│ ├── pages/
│ │ └── home.mdx
│ └── posts/
│ └── hello.md
└── packages/
└── website/ ← 您的Next.js应用
├── tina/
│ └── config.tsTinaCMS配置位于此处
├── package.json
└── ...

第1步:配置localContentPath

在您的tina/config.ts中,将localContentPath设置为指向您的内容目录。该路径是相对于tina/配置文件夹解析的,而不是项目根目录。

// packages/website/tina/config.ts
import { defineConfig } from 'tinacms'
export default defineConfig({
// 从packages/website/tina/ → 向上3级 → 进入content/
localContentPath: process.env.TINA_CONTENT_PATH || '../../../content',
build: {
publicFolder: 'public',
outputFolder: 'admin',
},
schema: {
collections: [
{
name: 'post',
label: '博客文章',
path: 'posts', // 相对于内容根目录,而不是应用程序
fields: [
{
type: 'string',
name: 'title',
label: '标题',
},
{
type: 'rich-text',
name: 'body',
label: '正文',
isBody: true,
},
],
},
],
},
})

使用环境变量来设置localContentPath,因为相对路径可能因开发者克隆仓库的位置不同而异。

第2步:在内容目录中创建tina/文件夹

TinaCMS将生成的文件(tina-lock.json__generated__/等)写入内容根目录中的tina/文件夹。此文件夹必须存在,否则CLI将失败并显示:

无法找到Tina文件夹,如果您在Tina配置之外的文件夹中工作,请确保指定--rootPath

创建它:

mkdir -p content/tina

您可以添加一个.gitkeep文件以确保它被Git跟踪:

touch content/tina/.gitkeep

第3步:设置相对于内容根目录的集合路径

当设置了localContentPath时,集合的path值是相对于内容根目录解析的,而不是应用程序文件夹。

例如,如果您的内容位于content/posts/

// 正确 - 相对于内容根目录
{
name: 'post',
path: 'posts',
// ...
}
// 错误 - 会查找content/content/posts/
{
name: 'post',
path: 'content/posts',
// ...
}

第4步:运行开发服务器

不需要特殊的CLI标志。只需像往常一样从您的应用程序目录运行:

cd packages/website
npx tinacms dev -c "next dev"

您应该会看到:

🦙 TinaCMS开发服务器正在初始化...
使用位于/path/to/my-monorepo/content的独立内容仓库
TinaCMS开发服务器已激活

故障排除

"无法找到Tina文件夹 ... 指定--rootPath"

此错误意味着内容目录缺少tina/文件夹。使用mkdir content/tina创建一个。错误消息中的--rootPath建议对于此用例是误导的——它控制TinaCMS查找应用程序配置的位置,而不是内容目录。

找不到文档或集合为空

检查您的集合path值是否相对于内容根目录,而不是应用程序文件夹。如果localContentPath指向content/,那么path: "posts"解析为content/posts/,而不是content/content/posts/

路径解析参考

localContentPath是相对于tina/配置文件夹解析的。仔细计算目录级别:

packages/website/tina/config.ts
↑ ↑ ↑
│ │ └── 文件
│ └── localContentPath从这里解析
└── ../../../content路径:tina/ → website/ → packages/ → 仓库根目录 → content/
上次编辑: February 18, 2026