@lark-apaas/fullstack-cli 0.1.0-alpha.3 → 0.1.0-alpha.4
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/README.md +129 -34
- package/bin/cli.js +76 -0
- package/dist/commands/gen-db-schema.d.ts +10 -0
- package/dist/commands/gen-db-schema.js +74 -0
- package/package.json +18 -2
- package/templates/.gitignore.append +8 -1
- package/templates/drizzle.config.ts +25 -0
- package/templates/scripts/gen-openapi.ts +12 -3
package/README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# @lark-apaas/fullstack-cli
|
|
2
2
|
|
|
3
|
-
> Fullstack
|
|
3
|
+
> Fullstack 开发工具集 - 文件派生、数据库 Schema 生成、OpenAPI 生成
|
|
4
4
|
|
|
5
5
|
## 功能
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
1. **自动派生** - 自动管理项目脚本和配置文件
|
|
8
|
+
2. **数据库 Schema 生成** - 从现有数据库生成 Drizzle ORM schema
|
|
9
|
+
3. **OpenAPI 生成** - 自动生成 API 文档和客户端 SDK
|
|
8
10
|
|
|
9
11
|
## 安装
|
|
10
12
|
|
|
@@ -14,75 +16,168 @@ npm install --save-dev @lark-apaas/fullstack-cli
|
|
|
14
16
|
|
|
15
17
|
## 使用
|
|
16
18
|
|
|
17
|
-
### 自动派生
|
|
19
|
+
### 1. 自动派生
|
|
18
20
|
|
|
19
|
-
每次运行 `npm install`
|
|
21
|
+
每次运行 `npm install` 时,会自动派生文件到项目:
|
|
20
22
|
|
|
21
23
|
**派生内容:**
|
|
22
|
-
- `scripts/` - 脚本目录(总是覆盖)
|
|
24
|
+
- `scripts/` - Shell 脚本目录(总是覆盖)
|
|
23
25
|
- `.gitignore` - 追加 fullstack-cli 相关忽略规则
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
⚠️ **`scripts/` 目录由 CLI 自动管理,请勿手动修改!**
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
### 2. 生成数据库 Schema
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
从现有数据库生成 Drizzle ORM schema:
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
```bash
|
|
34
|
+
npm run gen:db-schema
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**环境变量配置:**
|
|
38
|
+
```bash
|
|
39
|
+
# 必需
|
|
40
|
+
SUDA_DATABASE_URL=postgresql://user:pass@host:port/dbname?schema=public
|
|
41
|
+
|
|
42
|
+
# 可选
|
|
43
|
+
DB_SCHEMA_OUTPUT=server/database/schema.ts # 输出路径
|
|
44
|
+
DRIZZLE_SCHEMA_FILTER=public,custom # Schema 过滤器
|
|
45
|
+
DRIZZLE_TABLES_FILTER=users,orders # 表过滤器
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**工作流程:**
|
|
49
|
+
1. 从 `SUDA_DATABASE_URL` 读取数据库连接
|
|
50
|
+
2. 使用 CLI 内置的 `drizzle.config.ts`(用户无需维护)
|
|
51
|
+
3. 执行 `drizzle-kit introspect`
|
|
52
|
+
4. 后处理 schema(通过 devtool-kits)
|
|
53
|
+
5. 输出到 `server/database/schema.ts`
|
|
54
|
+
|
|
55
|
+
### 3. 生成 OpenAPI 文档
|
|
56
|
+
|
|
57
|
+
自动生成 OpenAPI 文档和客户端 SDK:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm run gen:openapi
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**环境变量配置:**
|
|
64
|
+
```bash
|
|
65
|
+
# 可选
|
|
66
|
+
APP_MODULE_PATH=server/app.module # AppModule 路径(不含扩展名)
|
|
67
|
+
CLIENT_BASE_PATH=/ # 客户端基础路径
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**工作流程:**
|
|
71
|
+
1. 动态导入用户项目的 `AppModule`
|
|
72
|
+
2. 挂载 DevToolsModule
|
|
73
|
+
3. 生成 OpenAPI 文档和客户端 SDK
|
|
74
|
+
|
|
75
|
+
### 4. CLI 命令
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# 查看帮助
|
|
79
|
+
fullstack-cli --help
|
|
80
|
+
|
|
81
|
+
# 生成数据库 schema
|
|
82
|
+
fullstack-cli gen-db-schema
|
|
83
|
+
|
|
84
|
+
# 生成 OpenAPI
|
|
85
|
+
fullstack-cli gen-openapi
|
|
86
|
+
|
|
87
|
+
# 查看版本
|
|
88
|
+
fullstack-cli --version
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## package.json 配置
|
|
92
|
+
|
|
93
|
+
在用户项目的 `package.json` 中添加:
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"scripts": {
|
|
98
|
+
"gen:db-schema": "fullstack-cli gen-db-schema",
|
|
99
|
+
"gen:openapi": "NODE_ENV=development DEPRECATED_SKIP_INIT_DB_CONNECTION=true fullstack-cli gen-openapi"
|
|
100
|
+
},
|
|
101
|
+
"devDependencies": {
|
|
102
|
+
"@lark-apaas/fullstack-cli": "^0.1.0",
|
|
103
|
+
"drizzle-kit": "^0.20.0" // 如果使用数据库功能
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## 技术细节
|
|
109
|
+
|
|
110
|
+
### 派生配置
|
|
32
111
|
|
|
33
|
-
|
|
112
|
+
派生规则在 `src/postinstall.config.ts` 中定义:
|
|
34
113
|
|
|
35
114
|
```typescript
|
|
36
115
|
export default {
|
|
37
|
-
// 派生规则
|
|
38
116
|
sync: [
|
|
39
|
-
// 派生整个目录
|
|
40
117
|
{
|
|
41
118
|
from: 'templates/scripts',
|
|
42
119
|
to: 'scripts',
|
|
43
120
|
type: 'directory',
|
|
44
121
|
overwrite: true,
|
|
45
122
|
},
|
|
46
|
-
|
|
47
|
-
// 追加内容到文件
|
|
48
123
|
{
|
|
49
124
|
from: 'templates/.gitignore.append',
|
|
50
125
|
to: '.gitignore',
|
|
51
126
|
type: 'append',
|
|
52
127
|
},
|
|
53
128
|
],
|
|
54
|
-
|
|
55
|
-
// 文件权限设置
|
|
56
129
|
permissions: {
|
|
57
130
|
'**/*.sh': 0o755,
|
|
58
131
|
},
|
|
59
132
|
};
|
|
60
133
|
```
|
|
61
134
|
|
|
62
|
-
###
|
|
135
|
+
### Drizzle 配置
|
|
63
136
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
137
|
+
CLI 内置 `templates/drizzle.config.ts`,通过环境变量动态配置:
|
|
138
|
+
- 用户**无需**维护 `drizzle.config.ts`
|
|
139
|
+
- 所有配置通过环境变量传递
|
|
140
|
+
- 使用绝对路径指向用户项目
|
|
67
141
|
|
|
68
|
-
|
|
69
|
-
- `overwrite: true` - 总是覆盖
|
|
70
|
-
- `overwrite: false` - 仅当文件不存在时复制
|
|
142
|
+
### OpenAPI 生成
|
|
71
143
|
|
|
72
|
-
-
|
|
73
|
-
|
|
144
|
+
- 动态导入用户的 `AppModule`
|
|
145
|
+
- 使用 `@lark-apaas/fullstack-nestjs-core` 的 DevToolsModule
|
|
146
|
+
- 自动生成客户端 SDK
|
|
74
147
|
|
|
75
|
-
##
|
|
148
|
+
## 依赖关系
|
|
76
149
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
150
|
+
```
|
|
151
|
+
fullstack-cli
|
|
152
|
+
↓ 依赖
|
|
153
|
+
@lark-apaas/devtool-kits (核心逻辑)
|
|
154
|
+
|
|
155
|
+
用户项目 peerDependencies:
|
|
156
|
+
- @nestjs/core (用于 gen-openapi)
|
|
157
|
+
- @lark-apaas/fullstack-nestjs-core (用于 gen-openapi)
|
|
158
|
+
- drizzle-kit (用于 gen-db-schema,可选)
|
|
159
|
+
```
|
|
84
160
|
|
|
85
|
-
|
|
161
|
+
## 升级说明
|
|
162
|
+
|
|
163
|
+
### 从旧版本迁移
|
|
164
|
+
|
|
165
|
+
**可以删除的文件:**
|
|
166
|
+
- ❌ `scripts/gen-db-schema.ts` - 已内置到 CLI
|
|
167
|
+
- ❌ `scripts/gen-openapi.ts` - 已内置到 CLI
|
|
168
|
+
- ❌ `drizzle.config.ts` - 已由 CLI 管理
|
|
169
|
+
|
|
170
|
+
**更新 package.json:**
|
|
171
|
+
```diff
|
|
172
|
+
{
|
|
173
|
+
"scripts": {
|
|
174
|
+
- "gen:db-schema": "ts-node scripts/gen-db-schema.ts",
|
|
175
|
+
+ "gen:db-schema": "fullstack-cli gen-db-schema",
|
|
176
|
+
- "gen:openapi": "nest start --entryFile ../scripts/gen-openapi",
|
|
177
|
+
+ "gen:openapi": "fullstack-cli gen-openapi"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
86
181
|
|
|
87
182
|
## License
|
|
88
183
|
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
const command = process.argv[2];
|
|
6
|
+
const distPath = path.join(__dirname, '..', 'dist');
|
|
7
|
+
|
|
8
|
+
async function main() {
|
|
9
|
+
try {
|
|
10
|
+
switch (command) {
|
|
11
|
+
case 'gen-db-schema': {
|
|
12
|
+
const { run } = await import(path.join(distPath, 'commands', 'gen-db-schema.js'));
|
|
13
|
+
await run();
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
case 'sync':
|
|
17
|
+
case 'postinstall': {
|
|
18
|
+
// 调用原有的 sync-scripts.js
|
|
19
|
+
require('./sync-scripts.js');
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
case '--version':
|
|
23
|
+
case '-v': {
|
|
24
|
+
const pkg = require('../package.json');
|
|
25
|
+
console.log(pkg.version);
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case '--help':
|
|
29
|
+
case '-h':
|
|
30
|
+
case undefined: {
|
|
31
|
+
showHelp();
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
default: {
|
|
35
|
+
console.error(`Unknown command: ${command}`);
|
|
36
|
+
console.error('');
|
|
37
|
+
showHelp();
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} catch (error) {
|
|
42
|
+
console.error(`Failed to execute command "${command}":`, error.message);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function showHelp() {
|
|
48
|
+
console.log(`
|
|
49
|
+
Usage: fullstack-cli <command> [options]
|
|
50
|
+
|
|
51
|
+
Commands:
|
|
52
|
+
gen-db-schema Generate database schema from existing database
|
|
53
|
+
sync Sync template files to user project (internal use)
|
|
54
|
+
|
|
55
|
+
Options:
|
|
56
|
+
--version, -v Show version number
|
|
57
|
+
--help, -h Show help
|
|
58
|
+
|
|
59
|
+
Environment Variables:
|
|
60
|
+
# gen-db-schema
|
|
61
|
+
SUDA_DATABASE_URL Database connection URL (required)
|
|
62
|
+
DB_SCHEMA_OUTPUT Output path for schema (default: server/database/schema.ts)
|
|
63
|
+
DRIZZLE_SCHEMA_FILTER Schema filter, comma-separated (optional)
|
|
64
|
+
DRIZZLE_TABLES_FILTER Tables filter (default: *)
|
|
65
|
+
|
|
66
|
+
Examples:
|
|
67
|
+
$ fullstack-cli gen-db-schema
|
|
68
|
+
$ DB_SCHEMA_OUTPUT=custom/schema.ts fullstack-cli gen-db-schema
|
|
69
|
+
|
|
70
|
+
Scripts (auto-generated):
|
|
71
|
+
scripts/gen-openapi.ts - Generate OpenAPI documentation (use: npm run gen:openapi)
|
|
72
|
+
scripts/gen-db-schema.ts - Generate database schema (deprecated, use CLI command)
|
|
73
|
+
`);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
main();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 生成数据库 schema
|
|
3
|
+
*
|
|
4
|
+
* 环境变量配置:
|
|
5
|
+
* - SUDA_DATABASE_URL: 数据库连接 URL(必需)
|
|
6
|
+
* - DB_SCHEMA_OUTPUT: schema 输出路径,默认 'server/database/schema.ts'
|
|
7
|
+
* - DRIZZLE_SCHEMA_FILTER: schema 过滤器,逗号分隔
|
|
8
|
+
* - DRIZZLE_TABLES_FILTER: 表过滤器,逗号分隔,默认 '*'
|
|
9
|
+
*/
|
|
10
|
+
export declare function run(): Promise<void>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
/**
|
|
5
|
+
* 生成数据库 schema
|
|
6
|
+
*
|
|
7
|
+
* 环境变量配置:
|
|
8
|
+
* - SUDA_DATABASE_URL: 数据库连接 URL(必需)
|
|
9
|
+
* - DB_SCHEMA_OUTPUT: schema 输出路径,默认 'server/database/schema.ts'
|
|
10
|
+
* - DRIZZLE_SCHEMA_FILTER: schema 过滤器,逗号分隔
|
|
11
|
+
* - DRIZZLE_TABLES_FILTER: 表过滤器,逗号分隔,默认 '*'
|
|
12
|
+
*/
|
|
13
|
+
export async function run() {
|
|
14
|
+
const databaseUrl = process.env.SUDA_DATABASE_URL;
|
|
15
|
+
if (!databaseUrl) {
|
|
16
|
+
console.error('[gen-db-schema] Error: SUDA_DATABASE_URL environment variable is required');
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
const outputPath = process.env.DB_SCHEMA_OUTPUT || 'server/database/schema.ts';
|
|
20
|
+
const OUT_DIR = path.resolve(process.cwd(), 'server/database/.introspect');
|
|
21
|
+
const SCHEMA_FILE = path.resolve(process.cwd(), outputPath);
|
|
22
|
+
console.log('[gen-db-schema] Starting...');
|
|
23
|
+
console.log(`[gen-db-schema] Output: ${outputPath}`);
|
|
24
|
+
// 使用 CLI 内部的 drizzle 配置
|
|
25
|
+
const cliRoot = path.resolve(__dirname, '../..');
|
|
26
|
+
const configPath = path.join(cliRoot, 'templates', 'drizzle.config.ts');
|
|
27
|
+
if (!fs.existsSync(configPath)) {
|
|
28
|
+
console.error('[gen-db-schema] Error: drizzle config not found in CLI package');
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
// 通过环境变量传递绝对路径给配置文件
|
|
32
|
+
const env = {
|
|
33
|
+
...process.env,
|
|
34
|
+
__DRIZZLE_OUT_DIR__: OUT_DIR,
|
|
35
|
+
__DRIZZLE_SCHEMA_PATH__: SCHEMA_FILE,
|
|
36
|
+
};
|
|
37
|
+
// 执行 drizzle-kit introspect
|
|
38
|
+
const args = process.argv.slice(3);
|
|
39
|
+
const spawnArgs = ['--yes', 'drizzle-kit', 'introspect', '--config', configPath, ...args];
|
|
40
|
+
const result = spawnSync('npx', spawnArgs, { stdio: 'inherit', env });
|
|
41
|
+
if (result.error) {
|
|
42
|
+
console.error('[gen-db-schema] Execution failed:', result.error);
|
|
43
|
+
process.exit(result.status ?? 1);
|
|
44
|
+
}
|
|
45
|
+
if ((result.status ?? 0) !== 0) {
|
|
46
|
+
process.exit(result.status ?? 1);
|
|
47
|
+
}
|
|
48
|
+
// 复制生成的 schema
|
|
49
|
+
const generatedSchema = path.join(OUT_DIR, 'schema.ts');
|
|
50
|
+
if (!fs.existsSync(generatedSchema)) {
|
|
51
|
+
console.error('[gen-db-schema] schema.ts not generated');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
fs.mkdirSync(path.dirname(SCHEMA_FILE), { recursive: true });
|
|
55
|
+
fs.copyFileSync(generatedSchema, SCHEMA_FILE);
|
|
56
|
+
console.log(`[gen-db-schema] ✓ Copied to ${outputPath}`);
|
|
57
|
+
// 后处理(如果 devtool-kits 可用)
|
|
58
|
+
try {
|
|
59
|
+
const { postprocessDrizzleSchema } = await import('@lark-apaas/devtool-kits');
|
|
60
|
+
const stats = postprocessDrizzleSchema(SCHEMA_FILE);
|
|
61
|
+
if (stats?.unmatchedUnknown?.length) {
|
|
62
|
+
console.warn('[gen-db-schema] Unmatched custom types detected:', stats.unmatchedUnknown);
|
|
63
|
+
}
|
|
64
|
+
console.log('[gen-db-schema] ✓ Postprocessed schema');
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.warn('[gen-db-schema] Postprocess skipped (devtool-kits not available)');
|
|
68
|
+
}
|
|
69
|
+
// 清理临时文件
|
|
70
|
+
if (fs.existsSync(OUT_DIR)) {
|
|
71
|
+
fs.rmSync(OUT_DIR, { recursive: true, force: true });
|
|
72
|
+
}
|
|
73
|
+
console.log('[gen-db-schema] ✓ Complete');
|
|
74
|
+
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/fullstack-cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.4",
|
|
4
4
|
"description": "CLI tool for fullstack template management",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"fullstack-cli": "./bin/cli.js"
|
|
9
|
+
},
|
|
7
10
|
"files": [
|
|
8
11
|
"dist",
|
|
9
12
|
"templates",
|
|
@@ -12,7 +15,7 @@
|
|
|
12
15
|
"scripts": {
|
|
13
16
|
"build": "tsc",
|
|
14
17
|
"prepublishOnly": "npm run build",
|
|
15
|
-
"postinstall": "node bin/sync-scripts.js
|
|
18
|
+
"postinstall": "node bin/sync-scripts.js"
|
|
16
19
|
},
|
|
17
20
|
"keywords": [
|
|
18
21
|
"fullstack",
|
|
@@ -27,6 +30,19 @@
|
|
|
27
30
|
"publishConfig": {
|
|
28
31
|
"access": "public"
|
|
29
32
|
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@lark-apaas/devtool-kits": "^1.0.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@nestjs/core": "^10.0.0",
|
|
38
|
+
"@lark-apaas/fullstack-nestjs-core": "^1.0.0",
|
|
39
|
+
"drizzle-kit": "^0.20.0"
|
|
40
|
+
},
|
|
41
|
+
"peerDependenciesMeta": {
|
|
42
|
+
"drizzle-kit": {
|
|
43
|
+
"optional": true
|
|
44
|
+
}
|
|
45
|
+
},
|
|
30
46
|
"devDependencies": {
|
|
31
47
|
"@types/node": "^22.0.0",
|
|
32
48
|
"typescript": "^5.9.2"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { defineConfig } from 'drizzle-kit';
|
|
2
|
+
|
|
3
|
+
// 这个配置会被 fullstack-cli 在运行时动态处理
|
|
4
|
+
// 通过环境变量传递具体参数
|
|
5
|
+
const outputDir = process.env.__DRIZZLE_OUT_DIR__ || './server/database/.introspect';
|
|
6
|
+
const schemaPath = process.env.__DRIZZLE_SCHEMA_PATH__ || './server/database/schema.ts';
|
|
7
|
+
const schemaFilter = process.env.DRIZZLE_SCHEMA_FILTER?.split(',') || [];
|
|
8
|
+
const tablesFilter = process.env.DRIZZLE_TABLES_FILTER?.split(',') || ['*'];
|
|
9
|
+
|
|
10
|
+
const parsedUrl = new URL(process.env.SUDA_DATABASE_URL || '');
|
|
11
|
+
|
|
12
|
+
export default defineConfig({
|
|
13
|
+
schema: schemaPath,
|
|
14
|
+
out: outputDir,
|
|
15
|
+
tablesFilter,
|
|
16
|
+
schemaFilter,
|
|
17
|
+
dialect: 'postgresql',
|
|
18
|
+
dbCredentials: {
|
|
19
|
+
host: parsedUrl.hostname,
|
|
20
|
+
port: Number(parsedUrl.port) || 5432,
|
|
21
|
+
user: decodeURIComponent(parsedUrl.username),
|
|
22
|
+
password: decodeURIComponent(parsedUrl.password),
|
|
23
|
+
database: parsedUrl.pathname.split('/')[1],
|
|
24
|
+
},
|
|
25
|
+
});
|
|
@@ -3,11 +3,20 @@ import { DevToolsModule } from '@lark-apaas/fullstack-nestjs-core';
|
|
|
3
3
|
|
|
4
4
|
import { AppModule } from '../server/app.module';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* 生成 OpenAPI 文档和客户端 SDK
|
|
8
|
+
*
|
|
9
|
+
* 此文件由 @lark-apaas/fullstack-cli 自动派生,请勿手动修改
|
|
10
|
+
* 每次运行 npm install 时会自动更新
|
|
11
|
+
*/
|
|
6
12
|
async function generateOpenApi() {
|
|
7
|
-
const app = await NestFactory.create(AppModule, {logger: false});
|
|
13
|
+
const app = await NestFactory.create(AppModule, { logger: false });
|
|
8
14
|
const basePath = process.env.CLIENT_BASE_PATH;
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
|
|
16
|
+
if (basePath) {
|
|
17
|
+
app.setGlobalPrefix(basePath);
|
|
18
|
+
}
|
|
19
|
+
|
|
11
20
|
await DevToolsModule.mount(app, {
|
|
12
21
|
basePath,
|
|
13
22
|
docsPath: '/api_docs',
|