Search by

matheushack / laravel-modules

MatheusHack

Gerador e carregador de módulos para Laravel.

Package info

github.com/matheushack/laravel-modules

pkg:composer/matheushack/laravel-modules

Statistics

Installs: 6

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-10-19 04:39 UTC

This package is auto-updated.

Last update: 2026-10-19 04:54:21 UTC


README

Version Downloads Monthly Downloads PHP Version Laravel License

Gerador e carregador de módulos para Laravel. Cada módulo fica em app/Modules e traz controller, service, repository, filter, model, resource, requests, rotas e provider. O pacote registra os módulos ligados, carrega rotas e migrations e expõe comandos Artisan para criar o restante sob demanda.

Requisitos

  • PHP 8.2 ou superior
  • Laravel 11 ou 12

Instalação

composer require matheushack/laravel-modules

O service provider entra pelo package discovery do Laravel. Para publicar a configuração:

php artisan vendor:publish --tag=laravel-modules-config

Para sobrescrever os stubs gerados:

php artisan vendor:publish --tag=laravel-modules-stubs

Os stubs publicados ficam em stubs/laravel-modules.

Uso

Cria um módulo com as camadas padrão:

php artisan module:make Blog

O comando gera a estrutura em app/Modules/Blog, com namespace App\Modules\Blog.

Lista os módulos encontrados:

php artisan module:list

Executa o seeder principal dos módulos ligados, ou de um módulo específico:

php artisan module:seed
php artisan module:seed Blog

Comandos por camada

Estes comandos criam o arquivo em um módulo que já existe:

Comando O que cria
module:make:controller {module} {name?} Controller
module:make:request {module} {name?} Form request (padrão: StoreRequest)
module:make:resource {module} {name?} API resource
module:make:model {module} {name?} Model
module:make:repository {module} {name?} Repository
module:make:filter {module} {name?} Filter
module:make:service {module} {name?} Service
module:make:enum {module} {name} Enum
module:make:factory {module} {name?} Factory
module:make:seeder {module} {name?} Seeder
module:make:job {module} {name?} Job
module:make:config {module} config.php na raiz do módulo
module:make:migration {module} {name} Migration
module:make:web {module} Arquivo de rotas web

module:migration é um alias de module:make:migration.

php artisan module:make:enum Blog PostStatus
php artisan module:make:migration Blog create_posts_table
php artisan module:make:factory Blog
php artisan module:make:seeder Blog
php artisan module:make:job Blog PublishPost

O que o module:make gera

Por padrão, o scaffold inclui controller, store request, update request, resource, model, repository, filter, service, provider, rotas da API e README.

Enum, factory, seeder, job, config, request avulso e rotas web ficam de fora do scaffold e são criados pelos comandos da tabela acima. A chave generate em config/laravel-modules.php liga ou desliga cada camada na criação do módulo. O comando da camada continua disponível mesmo quando ela está desligada no scaffold.

Estrutura

app/Modules/Blog/
├── BlogServiceProvider.php
├── README.md
├── config.php                          # opcional
├── Http/
│   ├── Controllers/
│   ├── Requests/
│   └── Resources/
├── Models/
├── Services/
├── Repositories/
├── Filters/
├── Enums/
├── Jobs/
├── Database/
│   ├── Factories/
│   └── Seeders/
└── resources/
    ├── routes/
    │   ├── api.php
    │   └── web.php                     # opcional
    └── database/
        └── migrations/

Pastas, namespace e canais de rota são configuráveis em config/laravel-modules.php.

Rotas

O canal api começa ligado, com prefixo api e middleware api. O canal web existe, mas permanece desligado: module:make:web só cria o arquivo. Para carregá-lo:

'routing' => [
    'web' => [
        'enabled' => true,
    ],
],

A mesma chave pode ser definida só para um módulo em specific ou no config.php da raiz desse módulo.

Ligar e desligar um módulo

enabled com false impede o registro do provider, das rotas e das migrations.

No config publicado:

'specific' => [
    'Blog' => [
        'enabled' => false,
    ],
],

Ou no config.php do próprio módulo. Em runtime, só durante a execução atual:

use Matheushack\LaravelModules\Facades\LaravelModules;

LaravelModules::disable('Blog');
LaravelModules::enable('Blog');

disable() e enable() não removem rotas que já foram registradas no boot.

Facade

O alias LaravelModules aponta para Matheushack\LaravelModules\Facades\LaravelModules. Além de enable, disable e enabled, a facade expõe caminho, namespace, lista de módulos, configuração e geração de arquivos.

Licença

MIT. Veja LICENSE.