@fastcar/cli 0.1.3 → 0.1.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/bin/cli.js CHANGED
@@ -1,235 +1,239 @@
1
- #!/usr/bin/env node
2
-
3
- const init = require("../src/init");
4
- const setModules = require("../src/setModules");
5
- const { reverseGenerate, initReverseConfig } = require("../src/reverse");
6
- const { packProject } = require("../src/pack");
7
- const {
8
- installSkill,
9
- uninstallSkill,
10
- listSkills,
11
- listTargets,
12
- initSkill,
13
- } = require("../src/skill");
14
- const { updateCosTemplate } = require("../src/update");
15
- const packageINFO = require("../package.json");
16
- const templates = require("../src/templates.json");
17
-
18
- function showHelp() {
19
- console.log(`
20
- Usage: fastcar-cli [command] [options]
21
-
22
- Commands:
23
- init [template] [name] 初始化项目
24
- template: 模板名称 (${Object.keys(templates).join(", ")})
25
- name: 项目名称(可选,默认使用当前目录名)
26
-
27
- clean node_modules 删除冗余的 node_modules 目录
28
- compress node_modules 压缩 node_modules 目录
29
- reverse 数据库表逆向生成
30
- reverse:init 生成 reverse.config.yml/json 配置文件
31
- pack [pm] 打包项目(排除 devDependencies)
32
- pm: 包管理器 (npm/yarn/pnpm),可选,默认自动检测
33
-
34
- update:cos 更新 @fastcar/template-cos 的 target 文件夹
35
-
36
- skill install <name> 安装 FastCar skill 到本地 AI Agent
37
- -g, --global 安装到全局(默认)
38
- -l, --local 安装到项目级
39
- -t, --target 目标 agent (kimi/claude/cursor)
40
- skill uninstall <name> 卸载 FastCar skill
41
- skill list 列出可用的 skills
42
- skill targets 列出支持的 AI Agents
43
- skill init 初始化项目级 agent 配置
44
-
45
- Options:
46
- -v, --version 显示版本号
47
- -h, --help 显示帮助信息
48
-
49
- Examples:
50
- $ fastcar-cli init # 交互式选择模板
51
- $ fastcar-cli init web # 使用 web 模板
52
- $ fastcar-cli init rpc # 使用 rpc 模板
53
- $ fastcar-cli init micro # 使用 microservices 模板
54
- $ fastcar-cli init cos # 使用 cos 模板
55
- $ fastcar-cli init static # 使用 static 模板
56
- $ fastcar-cli init my-project # 创建 my-project 目录
57
- $ fastcar-cli init web my-project # 使用 web 模板创建 my-project
58
- $ fastcar-cli clean node_modules
59
- $ fastcar-cli reverse # 数据库表逆向生成
60
- $ fastcar-cli reverse:init # 生成默认配置文件(默认 YAML 格式)
61
- $ fastcar-cli pack # 打包项目(自动检测包管理器)
62
- $ fastcar-cli pack yarn # 使用 yarn 安装依赖
63
- $ fastcar-cli pack pnpm # 使用 pnpm 安装依赖
64
-
65
- $ fastcar-cli update:cos # 更新 cos 模板的 target 文件夹
66
-
67
- $ fastcar-cli skill install fastcar-framework # 交互式安装
68
- $ fastcar-cli skill install fastcar-framework -g # 全局安装
69
- $ fastcar-cli skill install fastcar-framework -l # 本地安装
70
- $ fastcar-cli skill install fastcar-framework -t kimi # 安装到 Kimi
71
- $ fastcar-cli skill list # 列出可用 skills
72
- $ fastcar-cli skill targets # 列出支持的 agents
73
-
74
- Reverse 命令参数说明:
75
- 通过配置文件传入参数,在项目根目录创建 reverse.config.yml reverse.config.json:
76
-
77
- {
78
- "tables": ["test"], // 要逆向生成的表名数组(必填)
79
- "modelDir": "/path/to/models", // Model 文件输出目录绝对路径(必填)
80
- "mapperDir": "/path/to/mappers", // Mapper 文件输出目录绝对路径(必填)
81
- "dbConfig": { // MySQL 数据库配置(必填)
82
- "host": "localhost",
83
- "port": 3306,
84
- "user": "root",
85
- "password": "password",
86
- "database": "test_db"
87
- },
88
- "style": { // Prettier 格式化配置(可选)
89
- "tabWidth": 4,
90
- "printWidth": 200,
91
- "trailingComma": "es5",
92
- "useTabs": true,
93
- "parser": "typescript",
94
- "endOfLine": "crlf"
95
- },
96
- "ignoreCamelcase": false // 是否忽略驼峰命名转换(可选,默认 false)
97
- }
98
-
99
- 也可以使用 reverse:init 命令生成默认配置文件:
100
- $ fastcar-cli reverse:init
101
- `);
102
- }
103
-
104
- function showVersion() {
105
- console.log(`fastcar-cli version ${packageINFO.version}`);
106
- }
107
-
108
- async function run(argv) {
109
- // 命令入口
110
- if (!argv || argv.length === 0) {
111
- showHelp();
112
- return;
113
- }
114
-
115
- const head = argv[0];
116
- const body = argv.slice(1);
117
-
118
- switch (head) {
119
- case "-v":
120
- case "--version": {
121
- showVersion();
122
- break;
123
- }
124
- case "-h":
125
- case "--help": {
126
- showHelp();
127
- break;
128
- }
129
- case "init": {
130
- await init(body);
131
- break;
132
- }
133
- case "clean":
134
- case "compress": {
135
- if (!body[0]) {
136
- body[0] = "node_modules";
137
- }
138
-
139
- if (body[0] === "node_modules") {
140
- setModules(body[0], head === "compress");
141
- } else {
142
- console.log("❌ 缺少文件路径");
143
- }
144
- break;
145
- }
146
- case "reverse": {
147
- await reverseGenerate(body);
148
- break;
149
- }
150
- case "reverse:init": {
151
- await initReverseConfig();
152
- break;
153
- }
154
- case "pack": {
155
- const pm = body[0]; // 可选的包管理器参数
156
- packProject(null, null, pm);
157
- break;
158
- }
159
- case "update:cos": {
160
- await updateCosTemplate(body);
161
- break;
162
- }
163
- case "skill": {
164
- const subCmd = body[0];
165
- const args = body.slice(1);
166
-
167
- // 解析参数
168
- const options = {
169
- global: args.includes("-g") || args.includes("--global"),
170
- local: args.includes("-l") || args.includes("--local"),
171
- target: null,
172
- };
173
-
174
- // 解析 --target 或 -t
175
- const targetIdx = args.findIndex((a) => a === "-t" || a === "--target");
176
- if (targetIdx !== -1 && args[targetIdx + 1]) {
177
- options.target = args[targetIdx + 1];
178
- }
179
-
180
- // 移除参数,保留 skill name
181
- const skillName = args.find((a) => !a.startsWith("-"));
182
-
183
- switch (subCmd) {
184
- case "install": {
185
- if (!skillName) {
186
- console.log("❌ 请指定 skill 名称");
187
- console.log(
188
- "用法: fastcar-cli skill install <skill-name> [options]",
189
- );
190
- return;
191
- }
192
- installSkill(skillName, options);
193
- break;
194
- }
195
- case "uninstall": {
196
- if (!skillName) {
197
- console.log("❌ 请指定 skill 名称");
198
- console.log(
199
- "用法: fastcar-cli skill uninstall <skill-name> [options]",
200
- );
201
- return;
202
- }
203
- uninstallSkill(skillName, options);
204
- break;
205
- }
206
- case "list": {
207
- listSkills();
208
- break;
209
- }
210
- case "targets": {
211
- listTargets();
212
- break;
213
- }
214
- case "init": {
215
- initSkill(options);
216
- break;
217
- }
218
- default: {
219
- console.log("❌ 未知的 skill 命令");
220
- console.log("可用的子命令: install, uninstall, list, targets, init");
221
- }
222
- }
223
- break;
224
- }
225
- default: {
226
- console.log(`❌ 未知命令: ${head}\n`);
227
- showHelp();
228
- }
229
- }
230
- }
231
-
232
- run(process.argv.slice(2)).catch((err) => {
233
- console.error(err);
234
- process.exit(1);
235
- });
1
+ #!/usr/bin/env node
2
+
3
+ const init = require("../src/init");
4
+ const setModules = require("../src/setModules");
5
+ const { reverseGenerate, initReverseConfig } = require("../src/reverse");
6
+ const { packProject } = require("../src/pack");
7
+ const {
8
+ installSkill,
9
+ uninstallSkill,
10
+ listSkills,
11
+ listTargets,
12
+ initSkill,
13
+ } = require("../src/skill");
14
+ const { updateCosTemplate } = require("../src/update");
15
+ const packageINFO = require("../package.json");
16
+ const templates = require("../src/templates.json");
17
+
18
+ function showHelp() {
19
+ console.log(`
20
+ Usage: fastcar-cli [command] [options]
21
+
22
+ Commands:
23
+ init [template] [name] 初始化项目
24
+ template: 模板名称 (${Object.keys(templates).join(", ")})
25
+ name: 项目名称(可选,默认使用当前目录名)
26
+
27
+ clean node_modules 删除冗余的 node_modules 目录
28
+ compress node_modules 压缩 node_modules 目录
29
+ reverse 数据库表逆向生成
30
+ reverse:init 生成 reverse.config.yml/json 配置文件
31
+ pack [pm] 打包项目(排除 devDependencies)
32
+ pm: 包管理器 (npm/yarn/pnpm),可选,默认自动检测
33
+
34
+ update:cos 更新 @fastcar/template-cos 的 target 文件夹
35
+
36
+ skill install <name> 安装 FastCar skill 到本地 AI Agent
37
+ 使用 all 或 --all 安装全部 skills
38
+ -g, --global 安装到全局(默认)
39
+ -l, --local 安装到项目级
40
+ -t, --target 目标 agent (kimi/claude/cursor)
41
+ skill uninstall <name> 卸载 FastCar skill
42
+ skill list 列出可用的 skills
43
+ skill targets 列出支持的 AI Agents
44
+ skill init 初始化项目级 agent 配置
45
+
46
+ Options:
47
+ -v, --version 显示版本号
48
+ -h, --help 显示帮助信息
49
+
50
+ Examples:
51
+ $ fastcar-cli init # 交互式选择模板
52
+ $ fastcar-cli init web # 使用 web 模板
53
+ $ fastcar-cli init rpc # 使用 rpc 模板
54
+ $ fastcar-cli init micro # 使用 microservices 模板
55
+ $ fastcar-cli init cos # 使用 cos 模板
56
+ $ fastcar-cli init static # 使用 static 模板
57
+ $ fastcar-cli init my-project # 创建 my-project 目录
58
+ $ fastcar-cli init web my-project # 使用 web 模板创建 my-project
59
+ $ fastcar-cli clean node_modules
60
+ $ fastcar-cli reverse # 数据库表逆向生成
61
+ $ fastcar-cli reverse:init # 生成默认配置文件(默认 YAML 格式)
62
+ $ fastcar-cli pack # 打包项目(自动检测包管理器)
63
+ $ fastcar-cli pack yarn # 使用 yarn 安装依赖
64
+ $ fastcar-cli pack pnpm # 使用 pnpm 安装依赖
65
+
66
+ $ fastcar-cli update:cos # 更新 cos 模板的 target 文件夹
67
+
68
+ $ fastcar-cli skill install fastcar-framework # 交互式安装
69
+ $ fastcar-cli skill install fastcar-framework -g # 全局安装
70
+ $ fastcar-cli skill install fastcar-framework -l # 本地安装
71
+ $ fastcar-cli skill install fastcar-framework -t kimi # 安装到 Kimi
72
+ $ fastcar-cli skill install all # 安装全部 skills
73
+ $ fastcar-cli skill install --all -g # 全局安装全部 skills
74
+ $ fastcar-cli skill list # 列出可用 skills
75
+ $ fastcar-cli skill targets # 列出支持的 agents
76
+
77
+ Reverse 命令参数说明:
78
+ 通过配置文件传入参数,在项目根目录创建 reverse.config.yml 或 reverse.config.json:
79
+
80
+ {
81
+ "tables": ["test"], // 要逆向生成的表名数组(必填)
82
+ "modelDir": "/path/to/models", // Model 文件输出目录绝对路径(必填)
83
+ "mapperDir": "/path/to/mappers", // Mapper 文件输出目录绝对路径(必填)
84
+ "dbConfig": { // MySQL 数据库配置(必填)
85
+ "host": "localhost",
86
+ "port": 3306,
87
+ "user": "root",
88
+ "password": "password",
89
+ "database": "test_db"
90
+ },
91
+ "style": { // Prettier 格式化配置(可选)
92
+ "tabWidth": 4,
93
+ "printWidth": 200,
94
+ "trailingComma": "es5",
95
+ "useTabs": true,
96
+ "parser": "typescript",
97
+ "endOfLine": "crlf"
98
+ },
99
+ "ignoreCamelcase": false // 是否忽略驼峰命名转换(可选,默认 false)
100
+ }
101
+
102
+ 也可以使用 reverse:init 命令生成默认配置文件:
103
+ $ fastcar-cli reverse:init
104
+ `);
105
+ }
106
+
107
+ function showVersion() {
108
+ console.log(`fastcar-cli version ${packageINFO.version}`);
109
+ }
110
+
111
+ async function run(argv) {
112
+ // 命令入口
113
+ if (!argv || argv.length === 0) {
114
+ showHelp();
115
+ return;
116
+ }
117
+
118
+ const head = argv[0];
119
+ const body = argv.slice(1);
120
+
121
+ switch (head) {
122
+ case "-v":
123
+ case "--version": {
124
+ showVersion();
125
+ break;
126
+ }
127
+ case "-h":
128
+ case "--help": {
129
+ showHelp();
130
+ break;
131
+ }
132
+ case "init": {
133
+ await init(body);
134
+ break;
135
+ }
136
+ case "clean":
137
+ case "compress": {
138
+ if (!body[0]) {
139
+ body[0] = "node_modules";
140
+ }
141
+
142
+ if (body[0] === "node_modules") {
143
+ setModules(body[0], head === "compress");
144
+ } else {
145
+ console.log("❌ 缺少文件路径");
146
+ }
147
+ break;
148
+ }
149
+ case "reverse": {
150
+ await reverseGenerate(body);
151
+ break;
152
+ }
153
+ case "reverse:init": {
154
+ await initReverseConfig();
155
+ break;
156
+ }
157
+ case "pack": {
158
+ const pm = body[0]; // 可选的包管理器参数
159
+ packProject(null, null, pm);
160
+ break;
161
+ }
162
+ case "update:cos": {
163
+ await updateCosTemplate(body);
164
+ break;
165
+ }
166
+ case "skill": {
167
+ const subCmd = body[0];
168
+ const args = body.slice(1);
169
+
170
+ // 解析参数
171
+ const options = {
172
+ global: args.includes("-g") || args.includes("--global"),
173
+ local: args.includes("-l") || args.includes("--local"),
174
+ all: args.includes("--all"),
175
+ target: null,
176
+ };
177
+
178
+ // 解析 --target 或 -t
179
+ const targetIdx = args.findIndex((a) => a === "-t" || a === "--target");
180
+ if (targetIdx !== -1 && args[targetIdx + 1]) {
181
+ options.target = args[targetIdx + 1];
182
+ }
183
+
184
+ // 移除参数,保留 skill name
185
+ const skillName = args.find((a) => !a.startsWith("-"));
186
+
187
+ switch (subCmd) {
188
+ case "install": {
189
+ if (!skillName && !options.all) {
190
+ console.log("❌ 请指定 skill 名称,或使用 all/--all 安装全部");
191
+ console.log(
192
+ "用法: fastcar-cli skill install <skill-name> [options]",
193
+ );
194
+ return;
195
+ }
196
+ await installSkill(skillName || 'all', options);
197
+ break;
198
+ }
199
+ case "uninstall": {
200
+ if (!skillName) {
201
+ console.log("❌ 请指定 skill 名称");
202
+ console.log(
203
+ "用法: fastcar-cli skill uninstall <skill-name> [options]",
204
+ );
205
+ return;
206
+ }
207
+ await uninstallSkill(skillName, options);
208
+ break;
209
+ }
210
+ case "list": {
211
+ await listSkills();
212
+ break;
213
+ }
214
+ case "targets": {
215
+ listTargets();
216
+ break;
217
+ }
218
+ case "init": {
219
+ await initSkill(options);
220
+ break;
221
+ }
222
+ default: {
223
+ console.log("❌ 未知的 skill 命令");
224
+ console.log("可用的子命令: install, uninstall, list, targets, init");
225
+ }
226
+ }
227
+ break;
228
+ }
229
+ default: {
230
+ console.log(`❌ 未知命令: ${head}\n`);
231
+ showHelp();
232
+ }
233
+ }
234
+ }
235
+
236
+ run(process.argv.slice(2)).catch((err) => {
237
+ console.error(err);
238
+ process.exit(1);
239
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fastcar/cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "homepage": "https://william_zhong.coding.net/public/fast-car/fastcar-cli/git/files",
5
5
  "description": "fastcar-cli 脚手架快速搭建",
6
6
  "bin": {