coxmi / astro-payload-plugin

Payload CMS and Astro. Run both apps on the same server using the Payload local API. Works in Astro dev mode.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

In server.ts

import payload from 'payload'
import express from 'express'
import { astro } from 'astro-payload-plugin'

const app = express()

export async function getPayload() {
    await payload.init({
        secret: PAYLOAD_SECRET,
        express: app,
    })
    return payload
}

async function serve() {
    await getPayload()
    await astro({
        express: app,
        serverEntry: 'path/to/astro/server/entry.mjs',
        clientDir: 'path/to/astro/client',
    })
    app.listen(1234)
}

In astro.config.ts

import { defineConfig } from 'astro/config'
import node from '@astrojs/node'
import { payload } from 'astro-payload-plugin'
import { getPayload } from './server.ts'

export default defineConfig({
    integrations: [
        payload({
            builtConfigPath: 'absolute/path/to/payload.config.cjs',
            // pass payload instance to init
            init: getPayload
        })
    ],
    output: 'hybrid',
    // must use node middleware
    adapter: node({
        mode: 'middleware'
    })
})

Example repo

https://github.com/coxmi/astro-payload-example

About

Payload CMS and Astro. Run both apps on the same server using the Payload local API. Works in Astro dev mode.


Languages

Language:TypeScript 83.3%Language:JavaScript 16.7%