@zhin.js/cli 1.0.5 → 1.0.7
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/CHANGELOG.md +14 -0
- package/README.md +125 -57
- package/lib/cli.js +2 -2
- package/lib/cli.js.map +1 -1
- package/lib/commands/build.d.ts.map +1 -1
- package/lib/commands/build.js +72 -26
- package/lib/commands/build.js.map +1 -1
- package/lib/commands/new.d.ts +3 -0
- package/lib/commands/new.d.ts.map +1 -0
- package/lib/commands/new.js +351 -0
- package/lib/commands/new.js.map +1 -0
- package/lib/commands/start.d.ts.map +1 -1
- package/lib/commands/start.js +10 -4
- package/lib/commands/start.js.map +1 -1
- package/lib/utils/process.d.ts +2 -2
- package/lib/utils/process.d.ts.map +1 -1
- package/lib/utils/process.js +4 -10
- package/lib/utils/process.js.map +1 -1
- package/package.json +4 -4
- package/src/cli.ts +2 -2
- package/src/commands/build.ts +87 -32
- package/src/commands/new.ts +392 -0
- package/src/commands/start.ts +10 -5
- package/src/utils/process.ts +5 -11
- package/lib/commands/init.d.ts +0 -3
- package/lib/commands/init.d.ts.map +0 -1
- package/lib/commands/init.js +0 -845
- package/lib/commands/init.js.map +0 -1
- package/src/commands/init.ts +0 -893
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @zhin.js/cli
|
|
2
2
|
|
|
3
|
+
## 1.0.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c1a539e: fix: cli 优化,console 优化
|
|
8
|
+
- Updated dependencies [c8c3996]
|
|
9
|
+
- @zhin.js/logger@0.1.1
|
|
10
|
+
|
|
11
|
+
## 1.0.6
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- c490260: fix: 更新脚手架结构,优化包依赖
|
|
16
|
+
|
|
3
17
|
## 1.0.5
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,54 +1,67 @@
|
|
|
1
1
|
# @zhin.js/cli
|
|
2
2
|
|
|
3
|
-
Zhin
|
|
3
|
+
Zhin 机器人框架的全功能命令行工具,提供项目创建、开发调试、插件构建、进程管理等完整开发流程支持。
|
|
4
4
|
|
|
5
5
|
## 核心功能
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- 🧩 **插件开发**: 快速创建插件包,自动配置依赖
|
|
8
8
|
- 🔥 **开发模式**: 热重载开发服务器,实时代码更新
|
|
9
|
-
- 📦
|
|
9
|
+
- 📦 **插件构建**: 构建独立插件包(app + client)
|
|
10
10
|
- 🛠️ **进程管理**: 生产环境启动、停止、重启、后台运行
|
|
11
11
|
- ⚙️ **多运行时**: 支持 Node.js 和 Bun 运行时
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
> **注意**: 项目初始化功能已移至 `create-zhin-app`,请使用 `npm create zhin-app` 创建新项目。
|
|
13
14
|
|
|
14
15
|
## 命令详解
|
|
15
16
|
|
|
16
|
-
###
|
|
17
|
+
### new - 创建插件
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
创建新的插件包,自动添加到项目依赖:
|
|
19
20
|
|
|
20
21
|
```bash
|
|
21
|
-
zhin
|
|
22
|
+
zhin new [plugin-name] [options]
|
|
22
23
|
```
|
|
23
24
|
|
|
24
25
|
**选项:**
|
|
25
|
-
-
|
|
26
|
-
- `-p, --package-manager <manager>`: 包管理器 (npm|yarn|pnpm),默认 pnpm
|
|
27
|
-
- `-r, --runtime <runtime>`: 运行时 (node|bun),默认 node
|
|
28
|
-
- `-y, --yes`: 使用默认选项,跳过所有交互
|
|
26
|
+
- `--skip-install`: 跳过依赖安装
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
**生成的插件结构:**
|
|
31
29
|
```
|
|
32
|
-
my-
|
|
33
|
-
├──
|
|
34
|
-
│
|
|
35
|
-
|
|
36
|
-
│
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
├──
|
|
40
|
-
├──
|
|
41
|
-
├──
|
|
42
|
-
├── .
|
|
43
|
-
|
|
30
|
+
plugins/my-plugin/
|
|
31
|
+
├── app/ # 插件逻辑代码
|
|
32
|
+
│ └── index.ts # 插件入口
|
|
33
|
+
├── client/ # 客户端页面
|
|
34
|
+
│ ├── index.tsx # 页面入口
|
|
35
|
+
│ └── pages/ # React 组件
|
|
36
|
+
│ └── index.tsx
|
|
37
|
+
├── lib/ # app 构建输出
|
|
38
|
+
├── dist/ # client 构建输出
|
|
39
|
+
├── package.json # 插件配置
|
|
40
|
+
├── tsconfig.json # TypeScript 根配置
|
|
41
|
+
├── tsconfig.app.json # app 构建配置
|
|
42
|
+
├── tsconfig.client.json # client 构建配置
|
|
43
|
+
├── README.md # 插件文档
|
|
44
|
+
└── CHANGELOG.md # 变更日志
|
|
44
45
|
```
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
47
|
+
**自动配置:**
|
|
48
|
+
- ✅ 创建完整的 npm 包结构
|
|
49
|
+
- ✅ 配置 TypeScript 编译
|
|
50
|
+
- ✅ 自动添加到根 `package.json` 依赖(`workspace:*`)
|
|
51
|
+
- ✅ 自动安装依赖
|
|
52
|
+
- ✅ 生成示例代码(命令、页面)
|
|
53
|
+
|
|
54
|
+
**使用示例:**
|
|
55
|
+
```bash
|
|
56
|
+
# 交互式创建
|
|
57
|
+
zhin new
|
|
58
|
+
|
|
59
|
+
# 直接指定名称
|
|
60
|
+
zhin new my-awesome-plugin
|
|
61
|
+
|
|
62
|
+
# 跳过依赖安装
|
|
63
|
+
zhin new my-plugin --skip-install
|
|
64
|
+
```
|
|
52
65
|
|
|
53
66
|
### dev - 开发模式
|
|
54
67
|
|
|
@@ -65,7 +78,7 @@ zhin dev [options]
|
|
|
65
78
|
- 📊 **性能监控**: 实时性能统计
|
|
66
79
|
|
|
67
80
|
**选项:**
|
|
68
|
-
- `-p, --port [port]`:
|
|
81
|
+
- `-p, --port [port]`: HTTP 服务端口,默认 8086
|
|
69
82
|
- `--verbose`: 显示详细日志输出
|
|
70
83
|
- `--bun`: 使用 bun 运行时(默认使用 tsx)
|
|
71
84
|
|
|
@@ -73,7 +86,7 @@ zhin dev [options]
|
|
|
73
86
|
```bash
|
|
74
87
|
NODE_ENV=development
|
|
75
88
|
ZHIN_DEV_MODE=true
|
|
76
|
-
|
|
89
|
+
HTTP_PORT=8086
|
|
77
90
|
ZHIN_VERBOSE=false
|
|
78
91
|
```
|
|
79
92
|
|
|
@@ -139,44 +152,66 @@ zhin stop
|
|
|
139
152
|
- 🧹 清理 PID 文件
|
|
140
153
|
- 📝 详细停止日志
|
|
141
154
|
|
|
142
|
-
### build -
|
|
155
|
+
### build - 构建插件
|
|
143
156
|
|
|
144
|
-
|
|
157
|
+
构建 `plugins/` 目录下的插件包:
|
|
145
158
|
|
|
146
159
|
```bash
|
|
147
|
-
zhin build [options]
|
|
160
|
+
zhin build [plugin] [options]
|
|
148
161
|
```
|
|
149
162
|
|
|
163
|
+
**参数:**
|
|
164
|
+
- `[plugin]`: 可选,指定要构建的插件名称(不指定则构建所有插件)
|
|
165
|
+
|
|
150
166
|
**选项:**
|
|
151
|
-
- `--clean`:
|
|
167
|
+
- `--clean`: 构建前清理输出目录(`lib/` 和 `dist/`)
|
|
152
168
|
|
|
153
169
|
**功能:**
|
|
154
|
-
- 📦 TypeScript
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
170
|
+
- 📦 构建插件的 app 代码(TypeScript → lib/)
|
|
171
|
+
- � 构建插件的 client 页面(TypeScript → dist/)
|
|
172
|
+
- �🎯 完整的类型检查
|
|
173
|
+
- 🗂️ 自动组织输出文件
|
|
174
|
+
- ⚡ 并行构建优化
|
|
175
|
+
|
|
176
|
+
**使用示例:**
|
|
177
|
+
```bash
|
|
178
|
+
# 构建所有插件
|
|
179
|
+
zhin build
|
|
180
|
+
|
|
181
|
+
# 只构建特定插件
|
|
182
|
+
zhin build my-plugin
|
|
183
|
+
|
|
184
|
+
# 清理后构建
|
|
185
|
+
zhin build --clean
|
|
186
|
+
|
|
187
|
+
# 清理后构建特定插件
|
|
188
|
+
zhin build my-plugin --clean
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**注意:**
|
|
192
|
+
- ❌ 不用于构建主应用(app 本身不需要构建)
|
|
193
|
+
- ✅ 只构建 `plugins/` 目录下的独立插件包
|
|
194
|
+
- ✅ 每个插件使用自己的 `package.json` 中的 `build` 脚本
|
|
158
195
|
|
|
159
196
|
## 完整工作流程
|
|
160
197
|
|
|
161
198
|
### 1. 创建新项目
|
|
162
199
|
|
|
163
200
|
```bash
|
|
164
|
-
#
|
|
165
|
-
zhin
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
zhin init my-bot -y
|
|
201
|
+
# 使用 create-zhin-app(推荐)
|
|
202
|
+
npm create zhin-app my-awesome-bot
|
|
203
|
+
# 或
|
|
204
|
+
pnpm create zhin-app my-awesome-bot
|
|
169
205
|
|
|
170
|
-
|
|
171
|
-
zhin init my-bot -c ts -p pnpm -r bun
|
|
206
|
+
cd my-awesome-bot
|
|
172
207
|
```
|
|
173
208
|
|
|
174
209
|
### 2. 开发阶段
|
|
175
210
|
|
|
176
211
|
```bash
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
#
|
|
212
|
+
# 开发模式启动(支持热重载)
|
|
213
|
+
pnpm dev
|
|
214
|
+
# 或
|
|
180
215
|
zhin dev
|
|
181
216
|
|
|
182
217
|
# 详细日志模式
|
|
@@ -186,30 +221,63 @@ zhin dev --verbose
|
|
|
186
221
|
zhin dev --port 8080
|
|
187
222
|
```
|
|
188
223
|
|
|
189
|
-
### 3.
|
|
224
|
+
### 3. 创建插件
|
|
190
225
|
|
|
191
226
|
```bash
|
|
192
|
-
#
|
|
227
|
+
# 创建新插件
|
|
228
|
+
zhin new my-awesome-plugin
|
|
229
|
+
|
|
230
|
+
# 插件会自动添加到 package.json 依赖
|
|
231
|
+
# 在配置文件中启用插件
|
|
232
|
+
# 编辑 zhin.config.ts,添加到 plugins 数组:
|
|
233
|
+
# plugins: ['adapter-process', 'http', 'console', 'my-awesome-plugin']
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 4. 构建插件
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# 构建所有插件
|
|
240
|
+
pnpm build
|
|
241
|
+
# 或
|
|
193
242
|
zhin build
|
|
194
243
|
|
|
244
|
+
# 只构建特定插件
|
|
245
|
+
zhin build my-awesome-plugin
|
|
246
|
+
|
|
247
|
+
# 清理后构建
|
|
248
|
+
zhin build --clean
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### 5. 生产部署
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# 确保插件已构建
|
|
255
|
+
pnpm build
|
|
256
|
+
|
|
195
257
|
# 前台测试
|
|
258
|
+
pnpm start
|
|
259
|
+
# 或
|
|
196
260
|
zhin start
|
|
197
261
|
|
|
198
262
|
# 后台部署
|
|
263
|
+
pnpm daemon
|
|
264
|
+
# 或
|
|
199
265
|
zhin start --daemon --log-file ./logs/production.log
|
|
200
266
|
```
|
|
201
267
|
|
|
202
|
-
###
|
|
268
|
+
### 6. 运维管理
|
|
203
269
|
|
|
204
270
|
```bash
|
|
205
271
|
# 重启服务
|
|
206
272
|
zhin restart
|
|
207
273
|
|
|
208
274
|
# 停止服务
|
|
275
|
+
pnpm stop
|
|
276
|
+
# 或
|
|
209
277
|
zhin stop
|
|
210
278
|
|
|
211
|
-
#
|
|
212
|
-
|
|
279
|
+
# 重新构建插件并重启
|
|
280
|
+
pnpm build && zhin restart
|
|
213
281
|
```
|
|
214
282
|
|
|
215
283
|
## 高级配置
|
|
@@ -280,10 +348,10 @@ process.exit(51); // 特殊退出码,会触发自动重启
|
|
|
280
348
|
2. **端口占用**
|
|
281
349
|
```bash
|
|
282
350
|
# 检查端口占用
|
|
283
|
-
lsof -i :
|
|
351
|
+
lsof -i :8086
|
|
284
352
|
|
|
285
353
|
# 使用不同端口
|
|
286
|
-
zhin dev --port
|
|
354
|
+
zhin dev --port 8087
|
|
287
355
|
```
|
|
288
356
|
|
|
289
357
|
3. **权限问题**
|
package/lib/cli.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import { initCommand } from './commands/init.js';
|
|
4
3
|
import { startCommand, restartCommand } from './commands/start.js';
|
|
5
4
|
import { stopCommand } from './commands/stop.js';
|
|
6
5
|
import { devCommand } from './commands/dev.js';
|
|
7
6
|
import { buildCommand } from './commands/build.js';
|
|
7
|
+
import { newCommand } from './commands/new.js';
|
|
8
8
|
const program = new Command();
|
|
9
9
|
program
|
|
10
10
|
.name('zhin')
|
|
11
11
|
.description('Zhin机器人框架CLI工具')
|
|
12
12
|
.version('1.0.1');
|
|
13
13
|
// 注册命令
|
|
14
|
-
program.addCommand(initCommand);
|
|
15
14
|
program.addCommand(startCommand);
|
|
16
15
|
program.addCommand(restartCommand);
|
|
17
16
|
program.addCommand(stopCommand);
|
|
18
17
|
program.addCommand(devCommand);
|
|
19
18
|
program.addCommand(buildCommand);
|
|
19
|
+
program.addCommand(newCommand);
|
|
20
20
|
program.parse();
|
|
21
21
|
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,gBAAgB,CAAC;KAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;AACP,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,YAAY,SAyDrB,CAAC"}
|
package/lib/commands/build.js
CHANGED
|
@@ -4,51 +4,97 @@ import { spawn } from 'child_process';
|
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
export const buildCommand = new Command('build')
|
|
7
|
-
.description('
|
|
7
|
+
.description('构建插件项目')
|
|
8
|
+
.argument('[plugin]', '插件名称(默认构建所有插件)')
|
|
8
9
|
.option('--clean', '清理输出目录', false)
|
|
9
|
-
.action(async (options) => {
|
|
10
|
+
.action(async (pluginName, options) => {
|
|
10
11
|
try {
|
|
11
12
|
const cwd = process.cwd();
|
|
12
|
-
// 检查是否是
|
|
13
|
-
if (!
|
|
14
|
-
logger.error('当前目录不是Zhin项目');
|
|
13
|
+
// 检查是否是 workspace 项目
|
|
14
|
+
if (!isWorkspaceProject(cwd)) {
|
|
15
|
+
logger.error('当前目录不是 Zhin workspace 项目');
|
|
15
16
|
process.exit(1);
|
|
16
17
|
}
|
|
17
|
-
const
|
|
18
|
+
const pluginsDir = path.join(cwd, 'plugins');
|
|
19
|
+
if (!fs.existsSync(pluginsDir)) {
|
|
20
|
+
logger.error('未找到 plugins 目录');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
// 如果指定了插件名称
|
|
24
|
+
if (pluginName) {
|
|
25
|
+
const pluginPath = path.join(pluginsDir, pluginName);
|
|
26
|
+
if (!fs.existsSync(pluginPath)) {
|
|
27
|
+
logger.error(`未找到插件: ${pluginName}`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
await buildPlugin(pluginPath, pluginName, options.clean);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// 构建所有插件
|
|
34
|
+
const plugins = await fs.readdir(pluginsDir);
|
|
35
|
+
const validPlugins = plugins.filter(p => {
|
|
36
|
+
const pluginPath = path.join(pluginsDir, p);
|
|
37
|
+
const stat = fs.statSync(pluginPath);
|
|
38
|
+
return stat.isDirectory() && fs.existsSync(path.join(pluginPath, 'package.json'));
|
|
39
|
+
});
|
|
40
|
+
if (validPlugins.length === 0) {
|
|
41
|
+
logger.warn('未找到任何插件');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
logger.info(`找到 ${validPlugins.length} 个插件,开始构建...`);
|
|
45
|
+
for (const plugin of validPlugins) {
|
|
46
|
+
const pluginPath = path.join(pluginsDir, plugin);
|
|
47
|
+
await buildPlugin(pluginPath, plugin, options.clean);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.error(`构建失败: ${error}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
async function buildPlugin(pluginPath, pluginName, clean) {
|
|
57
|
+
return new Promise((resolve, reject) => {
|
|
58
|
+
logger.info(`正在构建插件: ${pluginName}...`);
|
|
18
59
|
// 清理输出目录
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
60
|
+
if (clean) {
|
|
61
|
+
const libPath = path.join(pluginPath, 'lib');
|
|
62
|
+
const distPath = path.join(pluginPath, 'dist');
|
|
63
|
+
if (fs.existsSync(libPath)) {
|
|
64
|
+
fs.removeSync(libPath);
|
|
65
|
+
logger.info(`✓ 已清理 ${pluginName}/lib`);
|
|
66
|
+
}
|
|
67
|
+
if (fs.existsSync(distPath)) {
|
|
68
|
+
fs.removeSync(distPath);
|
|
69
|
+
logger.info(`✓ 已清理 ${pluginName}/dist`);
|
|
70
|
+
}
|
|
22
71
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
cwd,
|
|
72
|
+
// 使用 pnpm build 构建插件
|
|
73
|
+
const child = spawn('pnpm', ['build'], {
|
|
74
|
+
cwd: pluginPath,
|
|
27
75
|
stdio: 'inherit',
|
|
28
76
|
shell: true,
|
|
29
77
|
});
|
|
30
78
|
child.on('close', (code) => {
|
|
31
79
|
if (code === 0) {
|
|
32
|
-
logger.
|
|
80
|
+
logger.success(`✓ ${pluginName} 构建完成`);
|
|
81
|
+
resolve();
|
|
33
82
|
}
|
|
34
83
|
else {
|
|
35
|
-
logger.error(
|
|
36
|
-
|
|
84
|
+
logger.error(`✗ ${pluginName} 构建失败,退出码: ${code}`);
|
|
85
|
+
reject(new Error(`Build failed with code ${code}`));
|
|
37
86
|
}
|
|
38
87
|
});
|
|
39
88
|
child.on('error', (error) => {
|
|
40
|
-
logger.error(
|
|
41
|
-
|
|
89
|
+
logger.error(`✗ ${pluginName} 构建失败: ${error.message}`);
|
|
90
|
+
reject(error);
|
|
42
91
|
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
function isZhinProject(cwd) {
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function isWorkspaceProject(cwd) {
|
|
95
|
+
const workspaceYamlPath = path.join(cwd, 'pnpm-workspace.yaml');
|
|
50
96
|
const packageJsonPath = path.join(cwd, 'package.json');
|
|
51
|
-
if (!fs.existsSync(packageJsonPath)) {
|
|
97
|
+
if (!fs.existsSync(workspaceYamlPath) || !fs.existsSync(packageJsonPath)) {
|
|
52
98
|
return false;
|
|
53
99
|
}
|
|
54
100
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,UAAU,SA+DnB,CAAC"}
|