gbmake-payload/src/payload.config.ts

78 lines
2.1 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 { 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],
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 || '',
},
}),
],
})