koodimonni/composer-dropin-installer
Composer plugin for Drupal that installs contributed modules, themes, and libraries into the correct project directories as drop-in packages. It simplifies dependency management for Drupal sites by letting Composer fetch and place code where Drupal expects it, reducing manual downloads and keeping b...
advanced-cache.php, object-cache.php, db.php, sunrise.php; Drupal settings.local.php-style overrides; platform-specific config files) into arbitrary application paths as part of a Composer install — without writing bespoke post-install scripts.post-install-cmd/post-update-cmd copy routine (or a shell script in CI) with declarative rules in composer.json. That is usually 1–2 engineering days saved per ecosystem and removes a class of "forgot to copy the file" production bugs.db.php routers, per-tenant overrides — while keeping the base install reproducible from a lockfile.Adopt when all of these hold:
vendor/ (WordPress, Drupal, or a similar drop-in pattern).Look elsewhere when:
vendor:publish + service providers instead.composer.json script block with rsync/cp -n would do the same job with fewer moving parts.For executives (1-minute read). We can remove a hand-maintained copy step from our deployments by adding a small Composer plugin that places platform drop-in files on install and never overwrites files customers have customized. Effect: fewer upgrade incidents, less custom glue code to own, no license cost (WTFPL). Trade-off: it's a niche package with limited community adoption, so we'd pin a version and keep an internal fork/fork path if it becomes load-bearing. Recommended next step: a one-sprint spike on one deployment lane to measure incident reduction before wider rollout.
For engineering. Declarative alternative to post-install-cmd scripts: define target paths for packages or individual files in composer.json, and the installer skips files that already exist. Safe-by-default behavior matches upgrade semantics we want. Risks to price in: low maintainer surface, no active dependents to lean on for battle-testing, WTFPL means we own support. Mitigation: pin the version in composer.lock, add a smoke test that asserts the drop-in set lands in the right place, and keep a vendored copy of the plugin in our repo.
How can I help you explore Laravel packages today?