PHPackages                             laravel-modules/module-generator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. laravel-modules/module-generator

ActiveLibrary

laravel-modules/module-generator
================================

Simple and beautiful tool helps to generate modules to use in your project

v3.2.2(5mo ago)292↑400%2MITPHPPHP ^8.0

Since Mar 6Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/laravel-modules/module-generator)[ Packagist](https://packagist.org/packages/laravel-modules/module-generator)[ RSS](/packages/laravel-modules-module-generator/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (1)Versions (13)Used By (2)

Module Generator
----------------

[](#module-generator)

Simple and beautiful tool helps to generate modules to use in your project

### Installation

[](#installation)

```
composer require laravel-modules/module-generator
```

### Usage

[](#usage)

```
$generator = new \LaravelModules\ModuleGenerator\Generator;

$generator->publish(__DIR__.'/../stubs');
```

##### Stubs Example

[](#stubs-example)

This example of users module:

```
stubs/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Api/
│   │   │       └── Users/
│   │   │           ├── ProfileController.php
│   │   │           └── UserController.php
│   │   ├── Requests/
│   │   │   └── Users/
│   │   │       └── UserRequest.php
│   │   └── Resources/
│   │       └── Users/
│   │           └── UserResource.php
│   └── Providers/
│       └── UsersServiceProvider.php
└── routes/
    └── api/
        └── users.php

```

You can specify publish path directory:

```
$generator->publish(
    from: __DIR__.'/../stubs',
    to: base_path('app')
);
```

You can also replace published file names using the third and forth arguments `$filesNameReplacement` and `$filesContentReplacement` by adding array of \[search =&gt; replacement\]

Example of crud module generator:

```
stubs/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Api/
│   │   │       └── Crud/
│   │   │           └── CrudController.php
│   │   ├── Requests/
│   │   │   └── Cruds/
│   │   │       └── CrudRequest.php
│   │   └── Resources/
│   │       └── Cruds/
│   │           └── CrudResource.php
│   └── Providers/
│       └── CrudsServiceProvider.php
└── routes/
    └── api/
        └── cruds.php

```

```
$crudReplacement = [
    'Cruds' => 'Categories',
    'cruds' => 'categories',
    'Crud' => 'Category',
    'crud' => 'category',
];

$generator->publish(
    from: __DIR__.'/../stubs',
    to: base_path('app'),
    filesNameReplacement: $crudReplacement,
    filesContentReplacement: $crudReplacement,
);
```

Result:

```
stubs/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── Api/
│   │   │       └── CategoryController.php
│   │   ├── Requests/
│   │   │   └── CategoryRequest.php
│   │   └── Resources/
│   │       └── CategoryResource.php
│   └── Providers/
│       └── CategoriesServiceProvider.php
└── routes/
    └── api/
        └── categories.php

```

#### Register Service Provider

[](#register-service-provider)

You can register the service provider in `config/app.php` file automatically by calling the `registerServiceProvider()` method:

```
$generator->registerServiceProvider('App\Providers\UsersServiceProvider')
```

#### Working with composer file

[](#working-with-composer-file)

```
$generator->composer()
    ->removePackages([
        'laravel/breeze',
    ])
    ->mergeRequire([
        'creativeorange/gravatar' => '~1.0.20',
        'laravel/socialite' => '^5.6',
        'laravel/ui' => '^3.2.0',
        'rollbar/rollbar-laravel' => '^7.0',
        'spatie/laravel-medialibrary' => '^10.0.0',
        'spatie/laravel-permission' => '^5.0',
        'yajra/laravel-datatables' => '^1.5',
        'yajra/laravel-datatables-oracle' => '^9.0',
        'ylsideas/feature-flags' => '^2.0',
    ])
    ->mergeRequireDev([
        'barryvdh/laravel-ide-helper' => '^2.13',
    ])
    ->removeScripts(['post-create-project-cmd'])
    ->mergeScripts([
        'auto-complete:generate' => [
            '@php artisan ide-helper:meta --ansi --quiet',
            '@php artisan ide-helper:generate --ansi --quiet',
            '@php artisan ide-helper:models --nowrite --quiet',
        ],
    ])
    ->publish();
```

> If you want to add a helper file to autoload, You can use `mergeAutoloadFiles` method:

```
$generator->composer()
    ->mergeAutoloadFiles([
        'app/Support/helpers.php',
    ])
    ->publish();
```

> You can add some packages to `dont-discover` by calling `dontDiscover()` method:

```
$generator->composer()
    ->dontDiscover([
        'rollbar/rollbar-laravel',
    ])
    ->publish();
```

#### Working with .env.example file

[](#working-with-envexample-file)

```
$generator->environment()
    ->set('APP_NAME', 'Starter Kit')
    ->set('ROLLBAR_TOKEN', "123")
    ->append("FOO=bar")
    ->prepend("FIRST_KEY=first")
    ->appendAfter('APP_URL=', "APP_FRONTEND_URL=https://example.com")
    ->prependBefore('APP_NAME=', "SECOND_KEY=second")
    ->publish();
```

#### Working with files

[](#working-with-files)

```
$generator
    ->file(path: resource_path('views/dashboard/sidebar.blade.php'))
    ->append("@include('dashboard.blogs.partials.sidebar')")
    ->prepend("@include('dashboard.users.partials.sidebar')")
    ->append("@include('dashboard.settings.partials.sidebar')")
    ->appendAfter(
        search: "@include('dashboard.blogs.partials.sidebar')",
        content: "@include('dashboard.articles.partials.sidebar')"
    )
    ->prependBefore(
        search: "@include('dashboard.settings.partials.sidebar')",
        content: "@include('dashboard.posts.partials.sidebar')"
    )
    ->publish()
```

> If the file doesn't exist, It will create a new one with the added content.

#### Modify files

[](#modify-files)

Example file:

```
