Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 14s
Build & Deploy / 🧪 QA (push) Successful in 3m46s
Build & Deploy / 🏗️ Build (push) Successful in 3m58s
Build & Deploy / 🚀 Deploy (push) Successful in 15s
Build & Deploy / 🔔 Notify (push) Has been cancelled
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been cancelled
103 lines
3.3 KiB
TypeScript
103 lines
3.3 KiB
TypeScript
import { buildConfig } from 'payload';
|
||
import { postgresAdapter } from '@payloadcms/db-postgres';
|
||
import { lexicalEditor } from '@payloadcms/richtext-lexical';
|
||
import sharp from 'sharp';
|
||
import path from 'path';
|
||
import { fileURLToPath } from 'url';
|
||
import { nodemailerAdapter } from '@payloadcms/email-nodemailer';
|
||
import { BlocksFeature } from '@payloadcms/richtext-lexical';
|
||
import { payloadBlocks } from './src/payload/blocks/allBlocks';
|
||
import { migrations } from './src/migrations';
|
||
|
||
// Only disable sharp cache in production to prevent memory leaks.
|
||
// In dev, the cache avoids 41s+ re-processing per image through VirtioFS.
|
||
if (process.env.NODE_ENV === 'production') {
|
||
sharp.cache(false);
|
||
}
|
||
|
||
import { Users } from './src/payload/collections/Users';
|
||
import { Media } from './src/payload/collections/Media';
|
||
import { Posts } from './src/payload/collections/Posts';
|
||
import { FormSubmissions } from './src/payload/collections/FormSubmissions';
|
||
import { Products } from './src/payload/collections/Products';
|
||
import { Pages } from './src/payload/collections/Pages';
|
||
import { seedDatabase } from './src/payload/seed';
|
||
|
||
const filename = fileURLToPath(import.meta.url);
|
||
const dirname = path.dirname(filename);
|
||
|
||
export default buildConfig({
|
||
onInit: async (payload) => {
|
||
if (process.env.NODE_ENV === 'production') {
|
||
await seedDatabase(payload);
|
||
}
|
||
},
|
||
admin: {
|
||
user: Users.slug,
|
||
importMap: {
|
||
baseDir: path.resolve(dirname),
|
||
},
|
||
components: {
|
||
graphics: {
|
||
Logo: '/src/payload/components/Logo',
|
||
Icon: '/src/payload/components/Icon',
|
||
},
|
||
},
|
||
meta: {
|
||
titleSuffix: ' – KLZ Cables',
|
||
icons: [{ rel: 'icon', type: 'image/x-icon', url: '/favicon.ico' }],
|
||
},
|
||
},
|
||
localization: {
|
||
locales: [
|
||
{ label: 'Deutsch', code: 'de' },
|
||
{ label: 'English', code: 'en' },
|
||
],
|
||
defaultLocale: 'de',
|
||
fallback: true,
|
||
},
|
||
collections: [Users, Media, Posts, FormSubmissions, Products, Pages],
|
||
editor: lexicalEditor({
|
||
features: ({ defaultFeatures }) => [
|
||
...defaultFeatures,
|
||
BlocksFeature({
|
||
blocks: payloadBlocks,
|
||
}),
|
||
],
|
||
}),
|
||
secret: process.env.PAYLOAD_SECRET || 'fallback-secret-for-dev',
|
||
typescript: {
|
||
outputFile: path.resolve(dirname, 'payload-types.ts'),
|
||
},
|
||
db: postgresAdapter({
|
||
prodMigrations: migrations,
|
||
pool: {
|
||
connectionString:
|
||
process.env.DATABASE_URI ||
|
||
process.env.POSTGRES_URI ||
|
||
`postgresql://${process.env.PAYLOAD_DB_USER || 'payload'}:${process.env.PAYLOAD_DB_PASSWORD || '120in09oenaoinsd9iaidon'}@127.0.0.1:54322/${process.env.PAYLOAD_DB_NAME || 'payload'}`,
|
||
},
|
||
}),
|
||
email: process.env.MAIL_HOST
|
||
? nodemailerAdapter({
|
||
defaultFromAddress:
|
||
process.env.MAIL_FROM?.replace(/.*<|>.*/g, '') || 'postmaster@mg.mintel.me',
|
||
defaultFromName: process.env.MAIL_FROM?.split('<')[0]?.trim() || 'KLZ Cables',
|
||
transportOptions: {
|
||
host: process.env.MAIL_HOST || 'smtp.eu.mailgun.org',
|
||
port: Number(process.env.MAIL_PORT) || 587,
|
||
...(process.env.MAIL_USERNAME
|
||
? {
|
||
auth: {
|
||
user: process.env.MAIL_USERNAME,
|
||
pass: process.env.MAIL_PASSWORD,
|
||
},
|
||
}
|
||
: {}),
|
||
},
|
||
})
|
||
: undefined,
|
||
sharp,
|
||
plugins: [],
|
||
});
|