# 모듈 스캐폴딩 (create-module) 새로운 모듈의 기본 구조를 생성합니다. ## TL;DR (5초 요약) ```text 1. 명령: /create-module vendor-module 2. 위치: modules/_bundled/vendor-module/ 3. 참조 샘플: modules/_bundled/gnuboard7-hello_module/ (학습용 최소 모듈, Memo CRUD) 4. hidden 플래그: manifest.hidden=true 시 관리자 UI 제외 (CLI 정상) 5. 생성 후: extension:update-autoload → module:install → module:activate ``` ## 사용법 ``` /create-module vendor-module ``` **예시**: `/create-module sirsoft-ecommerce` ## 입력 형식 - `vendor-module` — 벤더명과 모듈명을 하이픈(-)으로 연결 - 네임스페이스 자동 변환: `sirsoft-ecommerce` → `Modules\Sirsoft\Ecommerce\` - 언더스코어(_) → PascalCase: `sirsoft-order_management` → `Modules\Sirsoft\OrderManagement\` ## 생성 위치 `modules/_bundled/vendor-module/` ## 생성되는 파일 | 파일 | 설명 | |------|------| | `module.json` | 메타데이터 SSoT (identifier, version, dependencies 등) | | `module.php` | AbstractModule 상속 엔트리 클래스 | | `composer.json` | PSR-4 오토로딩 (src/, database/seeders/, database/factories/) | | `CHANGELOG.md` | Keep a Changelog 형식 | | `LICENSE` | MIT 라이선스 | | `config/settings/defaults.json` | 기본 설정 (_meta, defaults, frontend_schema) | | `src/lang/{ko,en}/*.php` | 백엔드 다국어 (messages, validation, exceptions) | | `resources/lang/{ko,en}.json` | 프론트엔드 다국어 | | `resources/routes.json` | 프론트엔드 라우트 정의 | | `src/routes/web.php` | 웹/API 라우트 | | `resources/layouts/admin/pages/index.json` | 초기 관리자 레이아웃 | ## 생성되는 디렉토리 - `src/Contracts/Repositories/` — Repository 인터페이스 - `src/Enums/` — Enum 정의 - `src/Exceptions/` — Custom Exception - `src/Http/Controllers/Admin/` — 관리자 컨트롤러 - `src/Http/Requests/Admin/` — FormRequest - `src/Http/Resources/` — API Resource - `src/Listeners/` — 훅 리스너 - `src/Models/` — Eloquent 모델 - `src/Providers/` — 서비스 프로바이더 - `src/Repositories/` — Repository 구현체 - `src/Services/` — 서비스 클래스 - `database/migrations/` — 마이그레이션 - `database/seeders/` — 시더 - `database/factories/` — 팩토리 - `tests/Feature/`, `tests/Unit/` — 테스트 ## module.php 구현 메서드 | 메서드 | 설명 | |--------|------| | `getRoles()` | 모듈 역할 정의 | | `getPermissions()` | 계층형 권한 (categories → permissions → action/name/type/roles) | | `getAdminMenus()` | 관리자 메뉴 (slug, url, icon, order, permission) | | `getSeeders()` | 설치 시 실행할 시더 목록 | | `getHookListeners()` | 훅 리스너 클래스 목록 | | `getStorageDisk()` | 스토리지 디스크 설정 | ## 생성 후 다음 단계 ```bash php artisan extension:update-autoload php artisan module:install vendor-module php artisan module:activate vendor-module ``` ## 참조 문서 - [모듈 기초](../../extension/module-basics.md) - [모듈 라우트](../../extension/module-routing.md) - [모듈 레이아웃](../../extension/module-layouts.md) - [모듈 다국어](../../extension/module-i18n.md) - [모듈 커맨드](../../extension/module-commands.md)