New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

nwidart/laravel-modules

Laravel Module management
19,074,957 6,222
Install
composer require nwidart/laravel-modules
Latest Version:v13.2.0
PHP:^8.3
Older releases:5
License:MIT
Last Updated:Oct 25, 2026
Links: GitHub  ·  Packagist
Maintainer: nWidart

Laravel Modules: one app, many self-contained modules

Latest Version on Packagist Software License Tests Total Downloads

What it does

  • Splits a large Laravel app into modules that live in Modules/.
  • Each module is a self-contained unit with its own service providers, routes, controllers, models, views, migrations, config and translations. It works like a small Laravel package inside your app.
  • Modules can be enabled or disabled. Only enabled modules are booted. Status is stored by an activator (a JSON file by default).
  • Artisan generators create modules and the classes inside them: module:make, module:make-controller, module:make-model, module:make-migration, and more.

php artisan module:make Blog generates:

Modules/Blog/
├── app/            Http/Controllers, Providers
├── config/
├── database/       factories, migrations, seeders
├── resources/      assets, views
├── routes/         web.php, api.php
├── tests/          Feature, Unit
├── composer.json
├── module.json
├── package.json
└── vite.config.js

Requirements

PHP 8.3+ and Laravel 13 for the current version. See Versions for older Laravel releases.

Install

composer require nwidart/laravel-modules

The service provider and alias are registered automatically. To publish the config file (optional):

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

Autoloading

Module classes are autoloaded through wikimedia/composer-merge-plugin. Add this to the extra section of your app's composer.json:

"extra": {
    "laravel": {
        "dont-discover": []
    },
    "merge-plugin": {
        "include": [
            "Modules/*/composer.json"
        ]
    }
},

On first install, Composer asks:

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. Or add it yourself:

"config": {
    "allow-plugins": {
        "wikimedia/composer-merge-plugin": true
    }
}

If the plugin is set to false, modules are not autoloaded. After changing composer.json, run:

composer dump-autoload

Since v11.0, the "Modules\\": "modules/" autoload entry is no longer needed. Remove it from your composer.json if present.

Quick start

php artisan module:make Blog      # create a module
php artisan module:list           # list modules and their status
php artisan module:disable Blog   # stop booting the module
php artisan module:enable Blog    # boot it again

Versions

Laravel laravel-modules
13 ^13.0
12 ^12.0
11 ^11.0
10 ^10.0

Older Laravel versions use the matching major: 5.4 uses ^1.0, 5.5 uses ^2.0, through Laravel 9 with ^9.0.

Documentation

Full documentation: https://laravelmodules.com/docs.

Credits

Originally based on pingpong/modules, which is no longer maintained.

License

MIT. See LICENSE.md.

Related Packages

servme/lumen-modules

Lumen Module management

10,032 0
reallyli/laravel-modules

Laravel Module management

4,251 0
yexiaoxiong/laravel-modules

Laravel Module management

11 0
duuany/laravel-modules

Laravel Module management

10 0

Version History

Version Released PHP License
v13.2.0 ^8.3 MIT
v13.1.0 ^8.3 MIT
v13.0.0 ^8.3 MIT
v12.0.5 >=8.2 MIT
v12.0.4 >=8.2 MIT