Skip to main content
drupalreleases

Use direct release data with your AI assistant.

Learn more

Content Packages

Security covered Under active development 5 sites

Content Packages enables a Git-friendly workflow for managing specific Drupal content, like editorial or demo content, by exporting and importing it as package files. This allows content changes to be reviewed in pull requests and ensures content can be reliably replayed across different environments.

Content Packages provides a Git-friendly workflow for managing selected Drupal content as canonical package files with YAML front matter. It is designed for teams that want important editorial, documentation, demo, or starter content to move through the same review and deployment process as code and configuration.

A package file can be validated, imported into Drupal, exported back from Drupal, and diffed against the current Drupal entity state. Imports upsert by UUID so the same package can be replayed across environments without creating duplicate content.

Use Content Packages when you want

  • Selected content entities stored in Git.
  • Content changes reviewed in pull requests.
  • Repeatable demo, starter, documentation, or seed content.
  • Local-first content authoring that can be replayed on another Drupal environment.
  • Content drift detection between Git package files and Drupal entity values.
  • Bundle-specific package mappings through package type plugins.
  • Selected recursive content graphs exported as reviewable ZIP or JAR archives, and imported on another site after verification.
  • Content that lands on the destination as a draft and is published by its editors or on a schedule.

Features

  • Validate package files before import.
  • Import package files into Drupal content entities.
  • Export Drupal content entities back to canonical package files.
  • Diff package files against Drupal entity values.
  • Upsert content by UUID.
  • Support legacy node Markdown packages.
  • Support schema v2 content entity packages with explicit fields.
  • Support package-relative file and image assets.
  • Support asset-backed standard file/image media references.
  • Support Layout Builder per-entity overrides: layout_section fields export, import, validate, and diff, with inline blocks packaged as embedded components.
  • Support references to configuration entities, such as a node type or a taxonomy vocabulary, by machine ID.
  • Support webform reference fields by webform machine ID, with optional default data, status, and open/close scheduling properties, when the Webform module is installed.
  • Support contributed and custom field types without a dedicated handler, when every property is a plain value.
  • Support translations.
  • Support inline components for entity_reference_revisions fields when supporting modules are installed.
  • Let the destination own publication: a package can import as a draft that the destination's editors publish.
  • Let the destination's Pathauto pattern generate URL aliases instead of pinning a literal alias, when Pathauto is installed.
  • Schedule publishing and unpublishing at import time with --publish-at and --unpublish-at, when Scheduler is installed.
  • Export selected content and supported recursive entity references to ZIP or JAR archives.
  • Add an archive integrity manifest with byte sizes, SHA-256 hashes, root metadata, package metadata, asset paths, omitted depth-limited references, and graph closure data.
  • Verify archives before use with content-packages:archive:verify, including hash and size checks, safe path checks, package front matter parsing, asset hash checks, unexpected-entry detection, and graph closure checks.
  • Import archives with content-packages:archive:import, which always verifies first and imports the verified contents in one transaction.
  • Review imported package assets that nothing references any more with content-packages:assets:cleanup, and remove them with --delete.

Archive scope

Archive export starts with a selected root entity and follows supported UUID-backed entity_reference targets up to the configured depth. Standard file/image media references currently stay asset-backed: the archive includes media source files and media bundle/UUID metadata, but does not export media entities as standalone package documents yet. Full media-entity archive export is planned as a future opt-in mode.

Not full-site content sync

Content Packages is intentionally scoped to selected content packages. It is not intended to replace broad site-wide content synchronization, UI-driven content copy workflows, or Drupal's full entity serialization ecosystem. Layout Builder support covers per-entity overrides; default layouts are configuration and belong in config management.

Requirements

The module requires the CommonMark and HTML-to-Markdown PHP libraries through Composer. Archive export, verification, and import require PHP's ZipArchive extension. Optional integrations activate only when supporting modules such as Media, Entity Reference Revisions, Paragraphs, Layout Builder, Pathauto, Scheduler, and Webform are installed.

Similar projects

  • Use Single Content Sync when you need broad site-wide entity synchronization, UI-driven workflows, or full parity with Drupal's entity serialization ecosystem.
  • Use Default Content when you are shipping install-time content with a module, recipe, distribution, or install profile.
  • Use Markdown when your main need is Markdown authoring/rendering inside Drupal text formats.
  • Use Migrate default content or Entity Migrate Export when your workflow should be based on Drupal's Migrate API.

Support and documentation

Report bugs, ask for support, and discuss features in the project's GitLab work items. The project README includes additional details about package formats, archive export, integrity verification, assets, references, Layout Builder overrides, and creating custom package type plugins.

Drupal 10–11

Ask your assistant about Content Packages

Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works

Depends on

Dependencies of the latest stable release

  • filter Drupal core
  • text Drupal core

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
12
Tracked since
Apr 2026
Latest release
5 days ago
Releases (12 mo)
12 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Core PHP Release date
1.0.0-alpha2 Pre-release 10–11 Apr 25, 2026
1.0.0-alpha1 Pre-release 10–11 Apr 24, 2026