93 lines
3.2 KiB
Markdown
93 lines
3.2 KiB
Markdown
# 모듈 스캐폴딩 (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)
|