88 lines
2.7 KiB
TypeScript
88 lines
2.7 KiB
TypeScript
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 { 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],
|
|
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 || '',
|
|
},
|
|
}),
|
|
],
|
|
})
|