Install
Works with Drupal: ^10.3 || ^11Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
Fixed
- Long-running child processes no longer let the database connection time out.
Package installs (up to 600s), Vite builds, tsc and SSR builds ran through a
blocking Process::run() while the parent PHP process held an idle MySQL
connection; on hosts with a lowered wait_timeout (60-120s is common on shared
hosting) the server dropped the connection mid-build and the next query -
typically Drupal's own shutdown cache writes - failed with "MySQL server has
gone away", leaving half-written caches behind. Every long-running spawn now
goes through a shared keepalive runner (sdx.process_runner) that pings the
connection every 30 seconds while the child runs, so the connection never
idles past any realistic wait_timeout regardless of server configuration.
Covers the package-manager plugins, the Vite bundler including vendor and
library-asset builds, tsc, vitest, the CSS pipeline, SSR builds and the
dev/watch servers.
Added
- drush sdx:build prints phase timings: total wall-clock plus the JS and CSS
phases, per-framework build durations and the library-asset compile time, so
slow builds can be profiled from their own output.
- Per-extension CSS builds run concurrently through a bounded pool; sdx:build
and sdx:build:css accept --concurrency (default 4). Failures still report
per extension once all builds finish.
Changed
- The Vite bundler no longer runs a package-manager install on every build. The
materialised package.json (plus the install command) is fingerprinted into
node_modules/.sdx-install-stamp after a successful install and the install is
skipped while the stamp matches; dependency changes and a wiped node_modules
still trigger a fresh install.