Fix client-side bundling by separating server and client exports

- Create dedicated /server export for server-side functions and plugin
- Main export now contains only types (client-safe)
- Remove problematic /steps export that exposed server functions
- Update README with correct import structure
- Fix tests to use /server export

This prevents server-side code from being bundled in client JavaScript,
eliminating the "require is not defined in ES module scope" runtime error.

Breaking change: workflowsPlugin must now be imported from '/server':
import { workflowsPlugin } from '@xtr-dev/payload-automation/server'

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-31 18:06:39 +02:00
parent 19b9566df6
commit cadb40e401
6 changed files with 86 additions and 22 deletions

View File

@@ -27,20 +27,40 @@ yarn add @xtr-dev/payload-automation
```typescript
import { buildConfig } from 'payload'
import { payloadAutomation } from '@xtr-dev/payload-automation'
import { workflowsPlugin } from '@xtr-dev/payload-automation/server'
export default buildConfig({
// ... your config
plugins: [
payloadAutomation({
collections: ['posts', 'users'], // Collections to monitor
globals: ['settings'], // Globals to monitor
workflowsPlugin({
collectionTriggers: {
posts: true, // Enable all CRUD triggers for posts
users: {
create: true, // Only enable create trigger for users
update: true
}
},
enabled: true,
}),
],
})
```
## Import Structure
The plugin uses separate exports to avoid bundling server-side code in client bundles:
```typescript
// Server-side plugin and functions
import { workflowsPlugin } from '@xtr-dev/payload-automation/server'
// Client-side components
import { TriggerWorkflowButton } from '@xtr-dev/payload-automation/client'
// Types only (safe for both server and client)
import type { WorkflowsPluginConfig } from '@xtr-dev/payload-automation'
```
## Step Types
- **HTTP Request** - Make external API calls