import { postgresAdapter } from '@payloadcms/db-postgres' import { lexicalEditor } from '@payloadcms/richtext-lexical' import path from 'path' import { buildConfig } from 'payload' import { fileURLToPath } from 'url' import sharp from 'sharp' import { Users } from './collections/Users' import { Media } from './collections/Media' import { Products } from './collections/Products' import { PreorderProducts } from './collections/PreorderProducts' import { Announcements } from './collections/Announcements' import { Articles } from './collections/Articles' import { Logs } from './collections/Logs' import { DisassemblyPages } from './collections/disassembly/DisassemblyPages' import { DisassemblyComponents } from './collections/disassembly/DisassemblyComponents' import { DisassemblyLinkedProducts } from './collections/disassembly/DisassemblyLinkedProducts' import { AdminSettings } from './globals/AdminSettings' import { LogsManager } from './globals/LogsManager' import { HeroSlider } from './globals/HeroSlider' import { ProductRecommendations } from './globals/ProductRecommendations' import { SiteAccess } from './globals/SiteAccess' import { s3Storage } from '@payloadcms/storage-s3' import { en } from '@payloadcms/translations/languages/en' import { zh } from '@payloadcms/translations/languages/zh' // 导入自定义翻译 import enProducts from './translations/en/products.json' import zhProducts from './translations/zh/products.json' const filename = fileURLToPath(import.meta.url) const dirname = path.dirname(filename) export default buildConfig({ admin: { user: Users.slug, importMap: { baseDir: path.resolve(dirname), }, }, i18n: { supportedLanguages: { en: { ...en, ...enProducts, }, zh: { ...zh, ...zhProducts, }, }, fallbackLanguage: 'zh', }, collections: [Users, Media, Products, PreorderProducts, Announcements, Articles, Logs, DisassemblyPages, DisassemblyComponents, DisassemblyLinkedProducts], globals: [AdminSettings, LogsManager, HeroSlider, ProductRecommendations, SiteAccess], editor: lexicalEditor(), secret: process.env.PAYLOAD_SECRET || '', typescript: { outputFile: path.resolve(dirname, 'payload-types.ts'), }, db: postgresAdapter({ pool: { connectionString: process.env.DATABASE_URL || '', }, migrationDir: path.resolve(dirname, 'migrations'), }), sharp, plugins: [ // Cloudflare R2 Storage via S3 API s3Storage({ collections: { media: { disableLocalStorage: true, generateFileURL: ({ filename }) => { return `${process.env.CLOUDFLARE_R2_PUBLIC_URL}/${filename}` }, }, }, bucket: process.env.CLOUDFLARE_R2_BUCKET || '', config: { credentials: { accessKeyId: process.env.CLOUDFLARE_R2_ACCESS_KEY_ID || '', secretAccessKey: process.env.CLOUDFLARE_R2_SECRET_ACCESS_KEY || '', }, region: process.env.CLOUDFLARE_R2_REGION || 'auto', endpoint: process.env.CLOUDFLARE_R2_ENDPOINT || '', }, }), ], })