feat: #3614680 Add Varbase Patches to the composer requirements and a Drupal CMS wiring script

Issue: https://www.drupal.org/project/educare/issues/3614680

Adds vardot/varbase-patches to this recipe's own requirements, and a scripts/drupal-cms-wiring.php that prepares a plain drupal/cms codebase for it: dev stability, the allow-plugins and patches allowlist varbase-patches needs to run, the drupal-libraries sync into web/libraries/, and nodeLinker: node-modules for Yarn 4.

The values live in scripts/assets/drupal-cms.composer.json and scripts/assets/drupal-libraries.package.json, so the wiring can change without editing the script. Idempotent, --dry-run supported.

cd PROJECT_DIR_NAME/recipes/educare/scripts
php drupal-cms-wiring.php

Then from the project root:

composer require drupal/educare -W
corepack enable && corepack yarn install

-W is required: a partial update keeps the locked symfony/css-selector, which drupal/storybook (via varbase_dev_base) conflicts with. vardot/varbase-patches arrives as a requirement of this recipe, so it needs no separate require — the wiring only has to permit its plugin first.

Same as Varbase Starter, by design

This mirrors Varbase Starter !14 for #3614678. That script is already parameterised, so only three constants and the docblock differ here — SITE_TEMPLATE_NAME, SITE_TEMPLATE_TITLE, SITE_TEMPLATE_PACKAGE. The two asset files are byte-identical to Starter's. Keeping them identical is deliberate: the wiring is a property of "a Site recipe on a plain Drupal CMS base", not of one template.

Nothing changes on a Varbase base.

Testing

gitlab-ci-local, run in a temporary worktree at 1.0.x so the clone's in-flight branch stayed untouched:

  • 📦 Composer validatePASS
  • 📐 YAML lintPASS
  • 🔤 CspellPASS
  • 🟨 ESLintPASS
  • 🧩 Cucumber dry-runPASS

php -l clean on the new script, and no starter string survives in it.

🧪 Automated Functional Testing was not run locally — it builds a full site and this machine is short on disk. Since this MR adds a composer requirement, that job is genuinely relevant, so please let the pipeline here confirm it rather than reading the five above as a full green.

Known limit, unchanged by this MR

This produces a working codebase, but on a plain Drupal CMS base the install itself still fails in the recipe config batch for a reason outside this recipe: drupal_cms_search clones every node view display and Drupal CMS installs layout_builder, so dependency calculation hits a null field definition. Varbase 11 remains the supported base today.

AI-Generated: Yes

Checkpoints:

  • File an issue
  • Addition/Change/Update/Fix
  • Testing to ensure no regression
  • Automated unit testing coverage
  • Automated functional testing coverage
  • UX/UI designer responsibilities
  • Readability
  • Accessibility
  • Performance
  • Security
  • Developer Documentation
  • User Guide Documentation
  • Reviewed by human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Release notes snippet
  • Release

Merge request reports

Loading