microweber-packages / microweber-config-merge
Package-priority config merging for Laravel – lets package/module config values override application defaults instead of the other way around.
Package info
github.com/microweber-packages/microweber-config-merge
pkg:composer/microweber-packages/microweber-config-merge
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0||^12.0||^13.0
- illuminate/support: ^10.0||^11.0||^12.0||^13.0
Requires (Dev)
- orchestra/testbench: ^8.0||^9.0||^10.0
- phpunit/phpunit: ^10.0||^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
- microweber-packages/config-merge: *
This package is auto-updated.
Last update: 2026-11-03 15:25:24 UTC
README
Package-priority config merging for Laravel service providers.
Problem
Laravel's built-in ServiceProvider::mergeConfigFrom() gives the application config priority over package defaults. This means a package cannot ship opinionated defaults that override what the app already has.
This package inverts that behaviour: the package/module config values take priority, letting CMS modules and packages ship defaults that "win" unless the system explicitly overrides them at a deeper level.
Installation
composer require microweber-packages/microweber-config-merge
Usage
use Illuminate\Support\ServiceProvider; use MicroweberPackages\ConfigMerge\MergesConfigFromPackage; class MyServiceProvider extends ServiceProvider { use MergesConfigFromPackage; public function register() { // Package config values override application defaults $this->mergeConfigFrom(__DIR__.'/../config/my-package.php', 'my-package'); } }
How it works
- Scalar values: Package value wins over the application value.
- Associative arrays: Recursively merged; package values win at each level.
- Numeric arrays and special keys (
middleware,register): Concatenated viaarray_mergeto preserve list-append semantics. - Cached configuration: Skipped entirely (respects
CachesConfiguration).
License
MIT