A Composer plugin that merges multiple composer.json files at runtime to simplify dependency management for modular applications.
Wikimedia Composer Merge Plugin is a Composer plugin that allows a project's main composer.json file to include and merge configuration from additional composer.json files. It enables modular dependency management by dynamically combining dependencies, autoload rules, repositories, and other settings from specified files, simplifying complex setups where core requirements coexist with optional components.
PHP developers and maintainers of large applications or frameworks, such as MediaWiki, that need to manage dependencies across multiple modules, extensions, or sub-projects via Composer.
Developers choose this plugin over manual dependency management because it provides a hierarchical, automated way to merge configurations, supports flexible conflict resolution strategies, and ensures critical files are validated, reducing configuration overhead in modular projects.
Merge one or more additional composer.json files at Composer runtime
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports glob patterns in the 'include' setting to dynamically merge multiple composer.json files, enabling hierarchical dependency management for extensions, as shown in the example with 'extensions/*/composer.json'.
Offers multiple strategies for duplicate packages: Composer's default engine, last-wins via 'replace': true, or first-wins via 'ignore-duplicates': true, providing control over version selection.
Configurable options like 'merge-dev', 'merge-scripts', and 'merge-extra' allow selective merging of specific sections, tailoring the combined configuration to project needs without unnecessary bloat.
The 'require' setting errors if patterns match no files, ensuring critical configurations like essential dependencies are never silently omitted, adding robustness to deployments.
Changes in included files aren't auto-detected; running 'composer update' is required to trigger re-evaluation, which can be overlooked in development workflows and lead to missing dependencies.
Custom commands from merged scripts sections are not available as direct Composer commands; they must be invoked via 'composer run-script', reducing convenience as documented in the 'merge-scripts' note.
Moving from Composer 1 to 2 requires updating the plugin first with Composer 1 to avoid it being ignored, adding steps and potential for error during upgrades, as highlighted in the README.