@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 +6 -3
- package/lib/scaffold.js +9 -1
- package/package.json +1 -1
- package/template/INVOKE.md +7 -0
- package/template/README.md +10 -0
- package/template/README.minimal.md +63 -0
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
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
package/template/INVOKE.md
CHANGED
|
@@ -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 전 반드시 빌드 + 배포**
|
package/template/README.md
CHANGED
|
@@ -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
|
+
```
|