Search by

aiwozhe / laravel-modules

aiwozhe

This package is abandoned and no longer maintained. No replacement package was suggested.

Laravel Module management

Package info

github.com/nWidart/laravel-modules

pkg:composer/aiwozhe/laravel-modules

Fund package maintenance!

nwidart

dcblogdev

Statistics

Installs: 523

Dependents: 0

Suggesters: 0

Stars: 6 220

Open Issues: 1

v13.2.0 2026-10-25 18:32 UTC

README

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.