配置参考
从 tina/config.{ts,tsx,js,jsx} 导出的 defineConfig 函数的结果定义了你的 TinaCMS 设置。
重要 - 配置必须是确定性的
defineConfig 返回的对象在开发和构建期间必须多次评估。避免在影响模式或运行时配置的配置属性中直接使用非确定性值(例如 Date.now(), Math.random())。这可能导致 GraphQL 模式不匹配错误。
如果需要动态值,请返回一个函数并延迟计算该值。
请注意,它必须是默认导出。
配置文件的位置以前在.tina/config.{ts,tsx,js,jsx}
选项
定义你的内容模型。
要从中提取内容的基本分支。对于 TinaCloud 是必需的。
来自 TinaCloud 的 clientId。对于 TinaCloud 是必需的。
来自 TinaCloud 的只读令牌。对于 TinaCloud 是必需的。
用于本地开发的单独内容仓库的路径,相对于 tina/ 配置文件夹解析(而不是项目根目录)。
设置后,集合 path 值相对于此内容根目录解析。内容目录必须包含一个 tina/ 文件夹(可以为空)— TinaCMS 会在其中写入生成的文件,如 tina-lock.json。
使用环境变量,因为路径可能因开发人员而异:
localContentPath: process.env.TINA_CONTENT_REPO_PATH // 例如 '../../my-content-repo'
有关完整的设置详细信息,请参阅 单独的内容仓库指南。
设置自定义身份验证。
覆盖默认内容 API URL。
控制 TinaCMS 是否收集匿名使用统计数据以帮助改进产品。
设置为 'disabled' 以完全选择退出。
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_]+/',},},});
使用 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({//...});