101 lines
3.6 KiB
Markdown
101 lines
3.6 KiB
Markdown
# 템플릿 스캐폴딩 (create-template)
|
|
|
|
새로운 템플릿(관리자 또는 사용자)의 기본 구조를 생성합니다.
|
|
|
|
## TL;DR (5초 요약)
|
|
|
|
```text
|
|
1. 명령: /create-template vendor-template [--type=admin|user]
|
|
2. 위치: templates/_bundled/vendor-template/
|
|
3. 참조 샘플: templates/_bundled/gnuboard7-hello_admin_template/ (Admin), gnuboard7-hello_user_template/ (User)
|
|
4. hidden 플래그: manifest.hidden=true 시 관리자 UI 제외 (CLI 정상)
|
|
5. 생성 후: npm install → template:build → template:install → template:activate
|
|
```
|
|
|
|
## 사용법
|
|
|
|
```text
|
|
/create-template vendor-template [--type=admin|user]
|
|
```
|
|
|
|
**예시**:
|
|
|
|
- `/create-template sirsoft-admin_modern` — Admin 템플릿
|
|
- `/create-template sirsoft-modern --type=user` — User 템플릿
|
|
|
|
기본값은 `admin`입니다.
|
|
|
|
## 입력 형식
|
|
|
|
- `vendor-template` — 벤더명과 템플릿명을 하이픈(-)으로 연결
|
|
- Admin 네이밍 권장: `vendor-admin_xxx` (예: `sirsoft-admin_modern`)
|
|
- User 네이밍 권장: `vendor-xxx` (예: `sirsoft-modern`)
|
|
|
|
## 생성 위치
|
|
|
|
`templates/_bundled/vendor-template/`
|
|
|
|
## 생성되는 파일
|
|
|
|
| 파일 | 설명 |
|
|
| ---- | ---- |
|
|
| `template.json` | 메타데이터 SSoT (type, components, error_config, externals 등) |
|
|
| `routes.json` | 프론트엔드 라우트 정의 |
|
|
| `components.json` | 컴포넌트 레지스트리 매핑 |
|
|
| `CHANGELOG.md` | Keep a Changelog 형식 |
|
|
| `LICENSE` | MIT 라이선스 |
|
|
| `lang/{ko,en}.json` | 다국어 |
|
|
| `layouts/_[type]_base.json` | 베이스 레이아웃 (slot 시스템) |
|
|
| `layouts/errors/*.json` | 에러 레이아웃 6종 (401/403/404/500/503/maintenance) |
|
|
| `layouts/[초기 페이지].json` | admin: admin_dashboard / user: home |
|
|
| `src/index.ts` | 컴포넌트 등록 엔트리 |
|
|
| `package.json` | npm 패키지 설정 |
|
|
| `vite.config.ts` | Vite 빌드 (IIFE 출력) |
|
|
| `vitest.config.ts` | Vitest 테스트 설정 |
|
|
| `tsconfig.json` | TypeScript 설정 |
|
|
|
|
## 생성되는 디렉토리
|
|
|
|
- `src/components/basic/` — 기본 컴포넌트 (Div, Button, Input 등)
|
|
- `src/components/composite/` — 합성 컴포넌트 (Modal, Toast 등)
|
|
- `src/components/layout/` — 레이아웃 컴포넌트 (Container, Flex, Grid, Section)
|
|
- `assets/css/`, `assets/fonts/`, `assets/images/` — 정적 에셋
|
|
- `preview/` — 미리보기 이미지
|
|
- `__tests__/layouts/` — 레이아웃 렌더링 테스트
|
|
|
|
## Admin vs User 차이
|
|
|
|
| 항목 | Admin | User |
|
|
| ---- | ----- | ---- |
|
|
| type | `"admin"` | `"user"` |
|
|
| 라우트 접두사 | `*/admin/*` | `/` |
|
|
| auth_required 기본 | `true` | `false` |
|
|
| 버전 히스토리 | 미지원 (읽기 전용) | 지원 (편집 가능) |
|
|
| 베이스 레이아웃 | header + sidebar + content + footer | header + content + footer |
|
|
| 초기 페이지 | `admin_dashboard` | `home` |
|
|
| 필수 composite | AdminHeader, AdminSidebar, AdminFooter, Modal, Toast | Header, Footer, Modal, Toast |
|
|
| features | 미포함 | dark_mode, responsive, multi_language, multi_currency |
|
|
|
|
## 생성 후 다음 단계
|
|
|
|
```bash
|
|
# 1. 패키지 설치
|
|
cd templates/_bundled/vendor-template
|
|
npm install
|
|
|
|
# 2. 컴포넌트 구현 (src/components/)
|
|
|
|
# 3. 빌드 및 설치
|
|
php artisan template:build vendor-template
|
|
php artisan template:install vendor-template
|
|
php artisan template:activate vendor-template
|
|
```
|
|
|
|
## 참조 문서
|
|
|
|
- [템플릿 기초](../../extension/template-basics.md)
|
|
- [템플릿 라우트](../../extension/template-routing.md)
|
|
- [템플릿 워크플로우](../../extension/template-workflow.md)
|
|
- [템플릿 보안](../../extension/template-security.md)
|
|
- [컴포넌트 개발 규칙](../../frontend/components.md)
|