wikimedia/composer-merge-plugin
Composer plugin that merges multiple composer.json files at runtime. Define extra include patterns (e.g., composer.local.json, extensions/*/composer.json) to combine dependencies and settings into the main config for installs and autoload generation.
Start by installing the plugin via Composer in your root project:
composer require --dev wikimedia/composer-merge-plugin
Then declare it in your root composer.json under "extra" (no version needed unless pinning):
{
"extra": {
"merge-plugin": {
"include": ["components/*/composer.json"]
}
}
}
Prerequisites:
Now, add per-component composer.json files (e.g., components/foo/composer.json, components/bar/composer.json) — each can define its own require, autoload, etc. Running composer install or update will automatically merge them into a unified dependency graph.
src/App/FeatureA/, vendor-packages/) holds its own composer.json, reducing clutter and ownership fragmentation.merge-plugin, avoiding conflict-prone manual updates."include" paths in order (e.g., ["base/composer.json", "overrides/composer.json"]) where later entries override earlier ones. Combine with "recurse": true to scan subdirectories recursively."require": true per file to mark optional modules — the plugin skips missing files gracefully."autoload" section is flattened and merged (not overridden), enabling modular PSR-4/PSR-0 definitions.Composer 2.0+ Optimization:
install/update performance in large monorepos.composer why-not <package> to debug missing dependencies in merged environments.replace, provide, or conflict merging: Only require, require-dev, autoload, scripts, and repositories are merged — other sections like config or scripts event definitions are not merged but are preserved as arrays. Double-check for unintentional overwrites.include take precedence. If two files define the same PSR-4 prefix, the last one in the merge list wins. Use "exclude" and "ignore-duplicates" to fine-tune.composer run-script --list --dev or inspect composer install -v output — the plugin logs merge activity.composer show -m (if supported) or manually run composer dump-autoload -o -v to verify merged autoloader behavior.composer diagnose to check for environment compatibility (e.g., PHP 7.2+).update/install. Use "recurse": false and explicit paths to reduce scan scope.composer clear-cache if issues persist.composer validate against both root and merged files to catch misconfigurations early.composer validate --strict to enforce modern syntax rules.composer.json recursively — the plugin only merges extra files, but misconfiguration can cause infinite recursion.How can I help you explore Laravel packages today?