مرجع CLI

🇬🇧 English

مرجع سریع دستور make:module و گزینه‌های فعلی آن.

دستور

bash
php artisan make:module {name} [options]

نام ماژول به StudlyCase تبدیل می‌شود؛ برای مثال Product، BlogPost یا OrderItem.

گزینه‌ها

گزینهمیانبرکاربرد
--controller=Subdir-cتولید/قرار دادن Controller در زیردایرکتوری دلخواه.
--apiاستفاده از Controller با ساختار API.
--requests-rتولید Form Requestهای Store/Update.
--tests-tفعال‌کردن تولید تست Feature.
--no-controller-ncعدم تولید Controller.
--no-resource-nrعدم تولید API Resource.
--no-dto-ndعدم تولید DTO.
--no-test-ntعدم تولید تست Feature.
--no-provider-npعدم تولید Service Provider ماژول.
--actionsتولید لایه Actions.
--no-actionsعدم تولید Actions.
--policyتولید Policy برای عملیات CRUD.
--no-policyعدم تولید Policy.
--swagger-sgتولید مستندات Swagger/OpenAPI.
--no-swaggerعدم تولید Swagger/OpenAPI.
--all-aتولید پشته کامل ماژول.
--full-fحالت کامل تولید ماژول.
--from-migration=-fmاستخراج فیلدها/روابط از مسیر یا hint مایگریشن.
--fields=تعریف Schema به‌صورت inline.
--forceبازنویسی فایل‌های تولیدشده موجود.

-a میانبر --all و -f میانبر --full است؛ این دو به‌ترتیب میانبر --api و --force نیستند.

نمونه‌های متداول

ماژول کامل API

bash
php artisan make:module Product --all \
  --fields="name:string:unique,price:decimal(10,2),is_active:boolean"

ماژول API با قابلیت‌های انتخابی

bash
php artisan make:module Product \
  --api --requests --tests --actions --policy --swagger \
  --fields="name:string:unique,price:decimal(10,2)"

تولید از مایگریشن موجود

bash
php artisan make:module Product --api --from-migration

یا مسیر/hint را مشخص کنید:

bash
php artisan make:module Product \
  --from-migration=database/migrations/2024_01_15_create_products_table.php

تولید حداقلی

bash
php artisan make:module Product \
  --no-controller --no-resource --no-test --no-provider

ساختار فیلدهای Inline

فرمت کلی فیلدها به‌شکل name:type:modifier و جداشده با کاما است:

bash
php artisan make:module Product --fields="name:string:unique,price:decimal(10,2):nullable,is_active:boolean"

چند نمونه رایج:

text
name:string:unique
price:decimal(10,2):nullable
metadata:json:nullable
user_id:foreignId:constrained(users)

برای جزئیات Parser به راهنمای Schema-Aware مراجعه کنید.

خروجی‌های قابل تولید

بسته به فلگ‌ها و config، ماژول می‌تواند شامل این موارد باشد:

  • Repository و Contract آن
  • Service و Contract آن
  • DTO
  • Controller
  • Form Requestهای Store/Update
  • API Resource
  • لایه Actions
  • Policy
  • Service Provider ماژول
  • تست Feature
  • مستندات Swagger/OpenAPI

لایه Actions فعلی شامل BaseAction مشترک و Actionهای List، Show، Create، Update، Delete و ListWithRelations برای هر ماژول است.

مسیر خروجی

مسیرها از config/module-generator.php خوانده می‌شوند. با تنظیمات پیش‌فرض، فایل‌ها در ساختاری مشابه زیر پخش می‌شوند:

text
app/
├── Actions/
├── DTOs/
├── Docs/
├── Http/
│   ├── Controllers/
│   ├── Requests/
│   └── Resources/
├── Policies/
├── Providers/
├── Repositories/
│   ├── Contracts/
│   └── Eloquent/
└── Services/
    └── Contracts/

tests/
└── Feature/

ژنراتور شما را به ساختار ثابت app/Modules/{Module} محدود نمی‌کند و مسیرها قابل تنظیم هستند.

ثبت Provider ماژول

اگر تولید Provider فعال باشد، Laravel Scaffolder فایل Provider را می‌سازد و تلاش می‌کند آن را ثبت کند:

  1. در bootstrap/providers.php، اگر این فایل وجود داشته باشد.
  2. در غیر این صورت داخل آرایه providers در config/app.php، اگر موجود باشد.

پیکربندی پکیج

برای overwrite یا غیرفعال‌کردن تست‌ها روی Environment Variableهای مستندنشده تکیه نکنید. پیش‌فرض‌های تولید و مسیرها در config/module-generator.php قرار دارند و فلگ‌های CLI در هر اجرا آن‌ها را override می‌کنند.

تنظیم Environment-backed فعلی پکیج خارج از گزینه‌های Swagger:

dotenv
MODULE_GENERATOR_LOG_CHANNEL=

جزئیات کامل در راهنمای پیکربندی آمده است.

دستورهای مرتبط

پکیج این commandها را هم ثبت می‌کند:

text
make:swagger
swagger:init
swagger:config
swagger:generate
swagger:ui

make:swagger برای سازگاری با مسیر قدیمی نگه داشته شده و برای workflow جدید JSON/OpenAPI بهتر است از swagger:generate استفاده شود.