snowsoft / laravel-modules
Laravel Module management
Requires
- php: >=8.2
- ext-dom: *
- ext-json: *
- ext-simplexml: *
- wikimedia/composer-merge-plugin: ^2.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^v3.52
- laravel/framework: ^v12.0|^13.0
- laravel/pint: ^1.16
- mockery/mockery: ^1.6
- orchestra/testbench: ^v10.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.5.3|^12.0.|^13.0.
- spatie/phpunit-snapshot-assertions: ^5.0
This package is auto-updated.
Last update: 2026-03-18 10:59:36 UTC
README
| Laravel | laravel-modules |
|---|---|
| 5.4 | ^1.0 |
| 5.5 | ^2.0 |
| 5.6 | ^3.0 |
| 5.7 | ^4.0 |
| 5.8 | ^5.0 |
| 6.0 | ^6.0 |
| 7.0 | ^7.0 |
| 8.0 | ^8.0 |
| 9.0 | ^9.0 |
| 10.0 | ^10.0 |
| 11.0 | ^11.0 |
| 12.0 | ^12.0 |
nwidart/laravel-modules is a Laravel package created to manage your large Laravel app using modules. A Module is like a Laravel package, it has some views, controllers or models. This package is supported and tested in Laravel 11.
This package is a re-published, re-organised and maintained version of pingpong/modules, which isn't maintained anymore.
With one big bonus that the original package didn't have: tests.
upgrade
To upgrade to version V12 follow Upgrade Guide on official document.
Install
To install via Composer, run:
composer require nwidart/laravel-modules
The package will automatically register a service provider and alias.
Optionally, publish the package's configuration file by running:
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
Autoloading
from v11.0 autoloading
"Modules\\": "modules/",is no longer required, and should be removed from your composer.json if present.
By default, the module classes are not loaded automatically. You can autoload your modules by adding merge-plugin to the extra section:
"extra": { "laravel": { "dont-discover": [] }, "merge-plugin": { "include": [ "Modules/*/composer.json" ] } },
Important
on the first installation you will be asked:
Do you trust "wikimedia/composer-merge-plugin" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?]
Answer y to allow the plugin to be executed. Otherwise, you will need to manually enable the following to your composer.json:
"config": { "allow-plugins": { "wikimedia/composer-merge-plugin": true }
if
"wikimedia/composer-merge-plugin": falsemodules will not be autoloaded.
Tip: don't forget to run composer dump-autoload afterwards
Documentation
You'll find installation instructions and full documentation on https://laravelmodules.com/.
Community
We also have a Discord community. https://discord.gg/hkF7BRvRZK For quick help, ask questions in the appropriate channel.
Credits
License
The MIT License (MIT). Please see License File for more information.