Skip to content

CLI

The boilerplate includes a CLI for scaffolding collections, globals, and blocks. All commands run through DDEV to keep environments consistent. Access it via DDEV:

Terminal window
ddev pnpm cli <command>

Scaffolds a new PayloadCMS collection with sensible defaults.

Terminal window
ddev pnpm cli scaffold collection <name> [options]

Arguments:

  • name — Collection name in kebab-case (e.g., blog-posts)

Options:

  • --type <type> — Collection type: public or private (default: public)

Example:

Terminal window
# Interactive prompt
ddev pnpm cli scaffold collection
# With arguments
ddev pnpm cli scaffold collection blog-posts --type public

What it creates:

  • src/collections/[name].ts with full configuration
  • SEO fields (meta title, description, image)
  • Access control defaults
  • Revalidation hooks
  • Version tracking

After running:

  1. Add the collection to payload.config.ts
  2. Add to src/config/slugs.ts for SEO
  3. Add to src/app/(frontend)/sitemap.ts
  4. Run ddev pnpm generate:types
  5. Create the frontend route in src/app/(frontend)/[name]/

Scaffolds a new PayloadCMS global.

Terminal window
ddev pnpm cli scaffold global <name>

Arguments:

  • name — Global name in kebab-case (e.g., site-settings)

Example:

Terminal window
# Interactive prompt
ddev pnpm cli scaffold global
# With argument
ddev pnpm cli scaffold global site-settings

What it creates:

  • src/globals/[name].ts with full configuration

After running:

Add the global to payload.config.ts and run ddev pnpm generate:types.


Scaffolds a new content block with config and component files.

Terminal window
ddev pnpm cli scaffold block <name>

Arguments:

  • name — Block name in kebab-case (e.g., hero-banner)

Example:

Terminal window
# Interactive prompt
ddev pnpm cli scaffold block
# With argument
ddev pnpm cli scaffold block hero-banner

What it creates:

  • src/blocks/[name]/config.ts — Block configuration
  • src/blocks/[name]/[name]-block.tsx — React component
  • src/blocks/[name]/[name].scss — Styles

After running:

  1. Register the block in RenderBlocks.tsx
  2. Add the block to a collection’s blocks array

Beyond the custom CLI, these scripts are available:

CommandPurpose
ddev pnpm devStart development server
ddev pnpm buildBuild for production
ddev pnpm lintRun Biome and Stylelint
ddev pnpm formatAuto-format code
ddev pnpm testRun tests
ddev pnpm generate:typesGenerate PayloadCMS types
ddev pnpm payload migrateRun database migrations
ddev pnpm payload migrate:statusCheck migration status