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

配置参考

Loading last updated info...
在此页面上

tina/config.{ts,tsx,js,jsx} 导出的 defineConfig 函数的结果定义了你的 TinaCMS 设置。

重要 - 配置必须是确定性的

defineConfig 返回的对象在开发和构建期间必须多次评估。避免在影响模式或运行时配置的配置属性中直接使用非确定性值(例如 Date.now(), Math.random())。这可能导致 GraphQL 模式不匹配错误。

如果需要动态值,请返回一个函数并延迟计算该值。

请注意,它必须是默认导出。

配置文件的位置以前在 .tina/config.{ts,tsx,js,jsx}

选项

REQUIRED
schema
Schema

定义你的内容模型

branch
string | null

要从中提取内容的基本分支。对于 TinaCloud 是必需的。


client​Id
string | null

来自 TinaCloud 的 clientId。对于 TinaCloud 是必需的。


token
string | null

来自 TinaCloud 的只读令牌。对于 TinaCloud 是必需的。


local​Content​Path
string

用于本地开发的单独内容仓库的路径,相对于 tina/ 配置文件夹解析(而不是项目根目录)。

设置后,集合 path 值相对于此内容根目录解析。内容目录必须包含一个 tina/ 文件夹(可以是空的)— TinaCMS 在那里写入生成的文件,如 tina-lock.json

使用环境变量,因为路径可能因开发人员而异:

localContentPath: process.env.TINA_CONTENT_REPO_PATH // 例如 '../../my-content-repo'

有关完整的设置详细信息,请参阅单独内容仓库指南


auth​Provider
AuthProvider
EXPERIMENTAL
content​Api​Url​Override
string

覆盖默认内容 API URL。


telemetry
'anonymous' | 'disabled'

控制 TinaCMS 是否收集匿名使用统计数据以帮助改进产品。

设置为 'disabled' 以完全选择退出。

Default is 'anonymous'.

All properties marked as REQUIRED must be specified for the field to work properly.

示例

Vercel 和 TinaCloud 配置

这是一个使用 TinaCloud 托管数据层和内置 Tina 媒体及搜索功能的标准配置。

const branch =
process.env.NEXT_PUBLIC_TINA_BRANCH ||
process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF ||
process.env.HEAD ||
'main';
export default defineConfig({
branch,
// 由 TinaCloud 生成
token: '<Your Read Only Token>',
// 由 TinaCloud 生成
clientId: '<Your Client ID>',
build: {
publicFolder: 'public',
outputFolder: 'admin',
},
schema: {
//内容模型定义在这里...
},
ui: {
previewUrl: (context) => {
// 根据分支名称使用 Vercel 预览部署
return { url: `https://my-app-git-${context.branch}.vercel.app` };
},
},
media: {
tina: {
publicFolder: 'public',
mediaRoot: 'uploads',
},
},
search: {
tina: {
indexerToken: process.env.TINA_SEARCH_TOKEN,
},
},
});

Cloudinary 媒体存储

Tina 支持 Git 支持的媒体和特定的外部媒体提供商:

export default defineConfig({
// ... 其他配置选项
media: {
loadCustomStore: async () => {
const pack = await import('next-tinacms-cloudinary');
return pack.TinaCloudCloudinaryMediaStore;
},
accept: 'image/*',
},
});

TinaCloud 搜索选项

Tina 通过 TinaCloud 提供内置搜索功能。

// Tina Cloud 搜索
export default defineConfig({
// ... 其他配置选项
search: {
tina: {
indexerToken: process.env.TINA_SEARCH_TOKEN,
stopwordLanguages: ['eng', 'fra'],
tokenSplitRegex: '/[p{L}d_]+/',
},
},
});

环境变量

TinaCMS 在两个上下文中使用环境变量:站点构建(你的 Next.js/SSG 应用)和 管理构建(TinaCMS 编辑器在 /admin)。这些有不同的作用域规则。

构建时嵌入

Tina 管理是一个静态构建的 SPA。环境变量在构建时(在 tinacms buildtinacms dev 期间)嵌入到管理的 JavaScript 中。它们不会在运行时读取。这意味着变量必须在构建运行时存在于环境中——之后设置它没有效果。

.env 文件支持

Tina 的构建过程仅从 .env 文件中获取变量。在 .env.local.env.development 或其他 dotenv 变体中定义的变量不会被 TinaCMS 构建加载。如果你要部署到托管提供商(Vercel、Netlify 等),请确保变量也在该提供商的环境设置中配置。

管理暴露的变量

为了安全起见,只有一部分环境变量包含在管理构建中。这可以防止敏感凭据泄露到公开服务的管理 index.js 中。

允许的变量是:

模式

描述

TINA_PUBLIC_*

TinaCMS 特定的公共变量

NEXT_PUBLIC_*

Next.js 公共变量

NODE_ENV

当前环境(developmentproduction 等)

HEAD

当前分支(由 Netlify 使用)

在管理中通过 process.env 访问的任何其他环境变量——包括自定义字段组件beforeSubmit 钩子或其他管理端代码——将是 undefined

要使环境变量在管理中工作,它必须:(1)使用 TINA_PUBLIC_NEXT_PUBLIC_ 前缀,并且(2)在 tinacms buildtinacms dev 运行时设置在环境中。例如,将 MY_API_KEY 重命名为 TINA_PUBLIC_MY_API_KEY 并确保它在你的 .env 文件或 CI/托管环境变量中。

常见环境变量

变量

上下文

描述

NEXT_PUBLIC_TINA_CLIENT_ID

站点 + 管理

你的 TinaCloud 项目客户端 ID

TINA_TOKEN

仅站点构建

TinaCloud 的只读令牌(不在管理中暴露)

TINA_PUBLIC_IS_LOCAL

站点 + 管理

在自托管设置中切换本地和生产后端

NEXT_PUBLIC_TINA_BRANCH

站点 + 管理

覆盖用于内容获取的分支

TINA_SEARCH_TOKEN

仅站点构建

TinaCloud 搜索索引的令牌

有关使用环境变量进行部署的更多信息,请参阅使用 TinaCloud 进入生产。有关管理变量作用域的安全背景,请参阅2023 年 2 月安全公告

使用 Typescript 路径别名的导入

TinaCMS 支持 tina/config.{ts,js,tsx} 文件和集合中的 TypeScript 路径别名。

确保 tsconfig.json 存在于项目的根目录。在 compilerOptions 部分定义你的别名。

//tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}

现在可以使用别名导入实用程序或其他模块。

import { someUtility } from '@/lib/utils';
export default defineConfig({
//...
});
上次编辑: December 9, 2025