Backport Node Storage Body Field
This module provides compatibility for contributed modules that depend on the node body field. It ensures that modules can be installed on older Drupal versions where the body field is not yet a separate sub-module, while also working correctly on newer versions where it is.
This module is discontinued because it was supposed to be a matepackage, but that can't be done with module projects.
This module provides a forward-compatibility polyfill for the node_storage_body_field sub-module introduced in Drupal 11.3 (#3447617).
In Drupal 11.3, field.storage.node.body was moved out of the Node module into a new node_storage_body_field sub-module. Contributed modules that ship node types with a body field must now declare a dependency on node_storage_body_field to ensure the field storage config exists when their module is installed. However, this creates a compatibility problem: adding node_storage_body_field as a dependency breaks installation on Drupal 10.x and 11.0–11.2, where that sub-module does not exist.
What this module does
On Drupal 10.x / 11.0–11.2 (version 1.x):
Provides an empty shim node_storage_body_field module that satisfies the dependency. No config is shipped — the Node module already provides field.storage.node.body on these core versions.
On Drupal 11.3+ (version 2.x):
Empty metapackage. Core already provides node_storage_body_field, so this package is a no-op.
Important note: Unfortunately, metapackages without an info.yml won't work since the composer.json gets the drupal/core requirement based on the core_version_requirment key from the info.yml.
Why not config/optional?
Moving field.storage.node.body to config/optional does not work reliably. Drupal's ConfigInstaller::checkConfigurationToInstall() validates all config/install dependencies for all modules being installed in a single operation, including during install profile execution and drush en with dependencies. Optional config is either deferred (during profile install) or only processed after all config/install is validated, causing UnmetDependenciesException failures.
Usage
Add to your module's composer.json:
"require": { "drupal/backport_node_storage_body_field": "^1 || ^2" }
Add to your module's .info.yml:
dependencies: - backport_node_storage_body_field:backport_node_storage_body_field
Requirements
- 1.x: Drupal core >=10.3 <11.3
- 2.x: Drupal core >=11.3