Skip to content

Instantly share code, notes, and snippets.

@mohammad-fouladgar
Last active June 28, 2022 12:38
Show Gist options
  • Save mohammad-fouladgar/21d41e6d2462b9c424d27e00dc06d1e2 to your computer and use it in GitHub Desktop.
Save mohammad-fouladgar/21d41e6d2462b9c424d27e00dc06d1e2 to your computer and use it in GitHub Desktop.
A custome config for laravel modules to generate DDD structure
<?php
return [
/*
|--------------------------------------------------------------------------
| Module Namespace
|--------------------------------------------------------------------------
|
| Default module namespace.
|
*/
'namespace' => 'Modules',
/*
|--------------------------------------------------------------------------
| Module Stubs
|--------------------------------------------------------------------------
|
| Default module stubs.
|
*/
'stubs' => [
'enabled' => false,
'path' => base_path() . '/vendor/nwidart/laravel-modules/src/Commands/stubs',
'files' => [
'routes/web' => 'Routes/web.php',
'routes/api' => 'Routes/api.php',
'scaffold/config' => 'Config/config.php',
'composer' => 'composer.json',
],
'replacements' => [
'routes/web' => ['LOWER_NAME', 'STUDLY_NAME'],
'routes/api' => ['LOWER_NAME'],
'webpack' => ['LOWER_NAME'],
'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
'views/index' => ['LOWER_NAME'],
'views/master' => ['LOWER_NAME', 'STUDLY_NAME'],
'scaffold/config' => ['STUDLY_NAME'],
'composer' => [
'LOWER_NAME',
'STUDLY_NAME',
'VENDOR',
'AUTHOR_NAME',
'AUTHOR_EMAIL',
'MODULE_NAMESPACE',
],
],
'gitkeep' => true,
],
'paths' => [
/*
|--------------------------------------------------------------------------
| Modules path
|--------------------------------------------------------------------------
|
| This path used for save the generated module. This path also will be added
| automatically to list of scanned folders.
|
*/
'modules' => base_path('Modules'),
/*
|--------------------------------------------------------------------------
| Modules assets path
|--------------------------------------------------------------------------
|
| Here you may update the modules assets path.
|
*/
'assets' => public_path('modules'),
/*
|--------------------------------------------------------------------------
| The migrations path
|--------------------------------------------------------------------------
|
| Where you run 'module:publish-migration' command, where do you publish the
| the migration files?
|
*/
'migration' => base_path('database/migrations'),
/*
|--------------------------------------------------------------------------
| Generator path
|--------------------------------------------------------------------------
| Customise the paths where the folders will be generated.
| Set the generate key to false to not generate that folder
*/
'generator' => [
/*
*|--------------------------------------------------------------------------
*| Application
*|--------------------------------------------------------------------------
*/
'controller' => ['path' => 'App/Http/Controllers', 'generate' => true],
'resource' => ['path' => 'App/Http/Resources', 'generate' => true],
'request' => ['path' => 'App/Http/Requests', 'generate' => true],
'command' => ['path' => 'App/Console', 'generate' => true],
'exception' => ['path' => 'App/Exceptions', 'generate' => true],
'provider' => ['path' => 'App/Providers', 'generate' => true],
'rules' => ['path' => 'App/Rules', 'generate' => true], //TODO: Or domain!
/*
*|--------------------------------------------------------------------------
*| Domain
*|--------------------------------------------------------------------------
*/
'model' => ['path' => 'Domain/Entities', 'generate' => true],
'repository' => ['path' => 'Domain/Repositories', 'generate' => true],
'service' => ['path' => 'Domain/Services', 'generate' => true],
'event' => ['path' => 'Domain/Events', 'generate' => true],
'listener' => ['path' => 'Domain/Listeners', 'generate' => true],
'policies' => ['path' => 'Domain/Policies', 'generate' => true], //TODO: Or Domain!
'jobs' => ['path' => 'Domain/Jobs', 'generate' => true], //TODO: Or Domain!
/*
*|--------------------------------------------------------------------------
*| Infrastructure
*|--------------------------------------------------------------------------
*/
'emails' => ['path' => 'Infrastructure/Emails', 'generate' => true],
'notifications' => ['path' => 'Infrastructure/Notifications', 'generate' => true],
'migration' => ['path' => 'Infrastructure/Database/Migrations', 'generate' => true],
'seeder' => ['path' => 'Infrastructure/Database/Seeders', 'generate' => true],
'factory' => ['path' => 'Infrastructure/Database/factories', 'generate' => true],
'config' => ['path' => 'Infrastructure/Config', 'generate' => true],
/*
*|--------------------------------------------------------------------------
*| TDD
*|--------------------------------------------------------------------------
*/
'test' => ['path' => 'tests/Unit', 'generate' => true],
'test-feature' => ['path' => 'tests/Feature', 'generate' => true],
'assets' => ['path' => 'Resources/assets', 'generate' => false],
'lang' => ['path' => 'Resources/lang', 'generate' => false],
'views' => ['path' => 'Resources/views', 'generate' => false],
],
],
/*
|--------------------------------------------------------------------------
| Scan Path
|--------------------------------------------------------------------------
|
| Here you define which folder will be scanned. By default will scan vendor
| directory. This is useful if you host the package in packagist website.
|
*/
'scan' => [
'enabled' => false,
'paths' => [
base_path('vendor/*/*'),
],
],
/*
|--------------------------------------------------------------------------
| Composer File Template
|--------------------------------------------------------------------------
|
| Here is the config for composer.json file, generated by this package
|
*/
'composer' => [
'vendor' => 'fouladgar',
'author' => [
'name' => 'fouladgar developer',
'email' => '[email protected]',
],
],
/*
|--------------------------------------------------------------------------
| Caching
|--------------------------------------------------------------------------
|
| Here is the config for setting up caching feature.
|
*/
'cache' => [
'enabled' => false,
'key' => 'laravel-modules',
'lifetime' => 60,
],
/*
|--------------------------------------------------------------------------
| Choose what laravel-modules will register as custom namespaces.
| Setting one to false will require you to register that part
| in your own Service Provider class.
|--------------------------------------------------------------------------
*/
'register' => [
'translations' => true,
/*
* load files on boot or register method
*
* Note: boot not compatible with asgardcms
*
* @example boot|register
*/
'files' => 'register',
],
];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment