@axyl-tcb/create-template 1.0.20 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/index.js CHANGED
@@ -80,7 +80,10 @@ async function resolveIncludeTests() {
80
80
  console.log(' cp .env.example .env # 연결 정보 입력 — README 참고');
81
81
  console.log(' npm run deploy:build');
82
82
  console.log('');
83
- console.log(' ※ npm audit high 경고는 @cloudbase SDK 알려진 전이 취약점입니다.');
84
- console.log(' 정상이며 SECURITY.md 에 설명돼 있습니다 — `npm audit fix --force` 는 실행하지 마세요.');
85
- console.log('');
83
+ // 최소 구성은 @cloudbase/node-sdk 포함하지 않아 audit 깨끗하므로 안내 불필요
84
+ if (includeTests) {
85
+ console.log(' ※ npm audit 의 high 경고는 @cloudbase SDK 의 알려진 전이 취약점입니다.');
86
+ console.log(' 정상이며 SECURITY.md 에 설명돼 있습니다 — `npm audit fix --force` 는 실행하지 마세요.');
87
+ console.log('');
88
+ }
86
89
  })();
package/lib/scaffold.js CHANGED
@@ -20,7 +20,9 @@ function validateProjectName(name) {
20
20
  return null;
21
21
  }
22
22
 
23
- const COPY_EXCLUDE = new Set(['node_modules', 'dist', '.git', '.npmignore']);
23
+ // README.minimal.md 최소(N) 구성 전용 README 소스 — 생성 프로젝트에 그대로 복사하지 않고
24
+ // scaffold() 가 최소 모드일 때만 README.md 로 사용한다.
25
+ const COPY_EXCLUDE = new Set(['node_modules', 'dist', '.git', '.npmignore', 'README.minimal.md']);
24
26
 
25
27
  /**
26
28
  * 디렉토리를 재귀적으로 복사한다.
@@ -118,6 +120,12 @@ function scaffold(projectName, targetDir, templateDir, options = {}) {
118
120
  // 테스트 미포함 선택 시 최소 구성으로 정리
119
121
  if (options.includeTests === false) {
120
122
  pruneTestArtifacts(targetDir);
123
+ // 풀 README(예제·테스트 중심)는 최소 구성과 맞지 않으므로 전용 README 로 교체.
124
+ // 모듈 가이드(MYSQL/STORAGE/DOCDB/SECURITY.md)는 확장 시 참고용으로 그대로 유지된다.
125
+ const minReadme = path.join(templateDir, 'README.minimal.md');
126
+ if (fs.existsSync(minReadme)) {
127
+ fs.copyFileSync(minReadme, path.join(targetDir, 'README.md'));
128
+ }
121
129
  }
122
130
 
123
131
  // package.json name 업데이트
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axyl-tcb/create-template",
3
- "version": "1.0.20",
3
+ "version": "1.0.22",
4
4
  "description": "Axyl TCB Cloud Function 프로젝트 스캐폴딩 CLI (npm create @axyl-tcb/template)",
5
5
  "bin": {
6
6
  "create-template": "bin/index.js"
@@ -6,6 +6,13 @@ TCB Cloud Function 실 환경 테스트 가이드입니다.
6
6
 
7
7
  ## CLI invoke 사용 방법 (실 환경, TCB 배포 필요)
8
8
 
9
+ > **사전 준비 — TCB(CloudBase) CLI** — `tcb` 명령은 최초 1회 설치·로그인이 필요합니다.
10
+ >
11
+ > ```bash
12
+ > npm i -g @cloudbase/cli # tcb 명령 설치
13
+ > tcb login # Tencent Cloud 계정 인증
14
+ > ```
15
+
9
16
  Windows 에서는 아래 명령어를 그대로 터미널에 붙여넣어 사용하세요.
10
17
 
11
18
  > **사전 준비 — invoke 전 반드시 빌드 + 배포**
@@ -189,6 +189,16 @@ npm test
189
189
 
190
190
  ### 4. 빌드 + 배포
191
191
 
192
+ 배포에는 **TCB(CloudBase) CLI** 가 필요합니다. 최초 1회 설치·로그인하세요.
193
+
194
+ ```bash
195
+ npm i -g @cloudbase/cli # tcb 명령 설치
196
+ tcb login # Tencent Cloud 계정 인증 (최초 1회)
197
+ tcb -v # 설치 확인
198
+ ```
199
+
200
+ 배포 대상 환경은 `cloudbaserc.json` 의 `envId` 값으로 지정됩니다.
201
+
192
202
  ```bash
193
203
  npm run deploy:build # 빌드 + 전체 배포
194
204
  npm run deploy # 빌드 없이 전체 배포
@@ -0,0 +1,63 @@
1
+ # <project-name>
2
+
3
+ TCB(Tencent CloudBase) Cloud Function 프로젝트 — **최소 구성**입니다.
4
+ `@axyl-tcb/middleware` 기반 기본 핸들러(`src/functions/basic/index.ts`) 하나로 시작합니다.
5
+
6
+ ## 빠른 시작
7
+
8
+ ```bash
9
+ npm install
10
+ npm run build # src/functions 의 핸들러를 dist 로 번들
11
+ ```
12
+
13
+ > 예제(MySQL·Storage·Document DB)와 테스트까지 포함한 풀 구성이 필요하면
14
+ > `npm create @axyl-tcb/template` 실행 시 **테스트 포함(Y)** 을 선택해 다시 생성하세요.
15
+
16
+ ## 구조
17
+
18
+ ```
19
+ <project-name>/
20
+ ├── src/functions/basic/index.ts # 기본 AxylHandler (items 조회 예시)
21
+ ├── scripts/build.js · deploy.js
22
+ ├── cloudbaserc.json # TCB 배포 설정 + 환경변수 키
23
+ └── .env.example
24
+ ```
25
+
26
+ ## 핸들러 작성
27
+
28
+ ```ts
29
+ import { createAxylHandler, type AxylBaseHandler, type AxylHttpEvent } from '@axyl-tcb/middleware';
30
+ import { pool } from '@axyl-tcb/middleware/db'; // MySQL 사용 시
31
+
32
+ interface ResDto { ok: true }
33
+
34
+ const baseHandler: AxylBaseHandler<AxylHttpEvent, ResDto> = async (event, context) => {
35
+ // context.playerId / context.aud.gameIndex 는 검증 완료된 신뢰값
36
+ return { ok: true };
37
+ };
38
+
39
+ export const main = createAxylHandler(baseHandler);
40
+ ```
41
+
42
+ 새 함수는 `src/functions/<name>.ts` 로 추가하고 `cloudbaserc.json` 에 등록하면 됩니다(`npm run build` 가 자동 인식).
43
+
44
+ ## 모듈 가이드
45
+
46
+ | 모듈 | 사용법 | 비고 |
47
+ | --- | --- | --- |
48
+ | MySQL | [MYSQL.md](./MYSQL.md) | `mysql2` 포함됨 — 바로 사용 가능 |
49
+ | Cloud Storage | [STORAGE.md](./STORAGE.md) | `npm i @cloudbase/node-sdk` 후 `@axyl-tcb/middleware/storage` 사용 |
50
+ | Document DB | [DOCDB.md](./DOCDB.md) | `npm i @cloudbase/node-sdk` 후 `@axyl-tcb/middleware/docdb` 사용 |
51
+
52
+ > 최소 구성은 `@cloudbase/node-sdk` 를 포함하지 않아 `npm audit` 가 깨끗합니다. Storage/Document DB 를 추가하면 `@cloudbase/node-sdk` 의 알려진 전이 취약점(high)이 함께 들어옵니다 — 불가피하며 [SECURITY.md](./SECURITY.md) 에 설명돼 있습니다.
53
+
54
+ ## 배포
55
+
56
+ TCB(CloudBase) CLI 설치·로그인 후 배포합니다. 배포 대상 환경은 `cloudbaserc.json` 의 `envId` 로 지정됩니다.
57
+
58
+ ```bash
59
+ npm i -g @cloudbase/cli # tcb 명령 설치
60
+ tcb login # 최초 1회 인증
61
+ cp .env.example .env # DB/TCB 연결 정보 입력
62
+ npm run deploy:build # 빌드 + 배포
63
+ ```