@axyl-tcb/create-template 1.0.21 → 1.0.23
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/README.minimal.md +65 -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
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
> Storage/Document DB 예제는 `src/functions/storage/` · `src/functions/docdb/` 경로를 쓰므로, 최소 구성에 추가할 때는 해당 디렉토리를 새로 만들면 됩니다(`npm run build` 가 자동 인식).
|
|
53
|
+
|
|
54
|
+
> 최소 구성은 `@cloudbase/node-sdk` 를 포함하지 않아 `npm audit` 가 깨끗합니다. Storage/Document DB 를 추가하면 `@cloudbase/node-sdk` 의 알려진 전이 취약점(high)이 함께 들어옵니다 — 불가피하며 [SECURITY.md](./SECURITY.md) 에 설명돼 있습니다.
|
|
55
|
+
|
|
56
|
+
## 배포
|
|
57
|
+
|
|
58
|
+
TCB(CloudBase) CLI 설치·로그인 후 배포합니다. 배포 대상 환경은 `cloudbaserc.json` 의 `envId` 로 지정됩니다.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm i -g @cloudbase/cli # tcb 명령 설치
|
|
62
|
+
tcb login # 최초 1회 인증
|
|
63
|
+
cp .env.example .env # DB/TCB 연결 정보 입력
|
|
64
|
+
npm run deploy:build # 빌드 + 배포
|
|
65
|
+
```
|