Skip to content

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

Notifications You must be signed in to change notification settings

coxmi/astro-payload-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Resources

Stars

Watchers

Forks

Packages

No packages published