pangu-vis-cli 1.1.0 → 1.2.0

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.
Files changed (3) hide show
  1. package/README.md +52 -252
  2. package/dist/index.js +10 -15
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,28 +1,25 @@
1
1
  # pangu-vis-cli
2
2
 
3
- > 盘古可视化图表开发工具链 - 一站式图表创建、开发、打包、上传解决方案
3
+ > 盘古可视化平台的图表包脚手架与开发辅助工具
4
4
 
5
5
  ## 简介
6
6
 
7
- `pangu-vis-cli` 是一个专为盘古可视化平台设计的命令行工具,提供图表包的创建、开发调试、打包构建、上传发布等完整工作流支持。通过简洁的命令,开发者可以快速创建标准化的图表项目,进行本地开发调试,并一键打包上传至泰合社区。
7
+ `pangu-vis-cli` 是一个专为盘古可视化平台设计的图表包脚手架与开发辅助工具,覆盖图表包创建、本地开发调试与打包构建。通过简洁的命令,开发者可以快速创建标准化的图表项目,进行本地开发调试,并一键打包为 tar.gz 发布产物。1.1.0 起本工具聚焦脚手架与开发辅助,tar.gz 发布产物面向盘古可视化平台使用。
8
8
 
9
9
  **核心价值**:
10
10
 
11
11
  - 🚀 **快速初始化** - 一键创建标准化图表项目模板
12
- - 🔧 **开发友好** - 本地开发环境自动配置
13
- - 📦 **智能打包** - 版本管理、自动压缩、依赖优化
14
- - 📤 **便捷发布** - 认证上传至图表社区
12
+ - 🔧 **开发友好** - 一键启动图表包本地开发调试
13
+ - 📦 **智能打包** - 版本同步、自动压缩、一键生成 tar.gz 发布产物
15
14
  - ⚙️ **灵活配置** - 自动化行为可自定义
16
15
 
17
16
  ## 特性
18
17
 
19
- - ✅ 支持 8 种图表类型(折线图、柱状图、饼图、表格、地图、文本、指标、交互)
18
+ - ✅ 支持 9 种图表类型(折线图、柱状图、饼图、表格、地图、文本、指标、交互、其他)
20
19
  - ✅ 可选 TypeScript 支持
21
20
  - ✅ 交互式命令行提示
22
- - ✅ 自动版本同步(base.json ↔ package.json)
23
- - ✅ 并发打包优化
24
- - ✅ tar.gz 压缩包生成
25
- - ✅ 用户认证与 token 管理
21
+ - ✅ 自动版本同步(public/base.json ↔ package.json)
22
+ - ✅ 单图表一键打包为 tar.gz
26
23
  - ✅ 自动更新检测
27
24
  - ✅ 跨平台支持(macOS / Windows / Linux)
28
25
 
@@ -88,18 +85,14 @@ pnpm dev
88
85
  # 1. 创建图表包
89
86
  pv create my-chart
90
87
 
91
- # 2. 开发调试
88
+ # 2. 进入图表包目录
92
89
  cd packages/components/my-chart
90
+
91
+ # 3. 启动开发环境
93
92
  pnpm dev
94
93
 
95
- # 3. 打包构建(在图表包目录)
94
+ # 4. 打包构建(在图表包目录)
96
95
  pv build
97
-
98
- # 4. 用户认证
99
- pv auth
100
-
101
- # 5. 上传发布
102
- pv upload my-chart_v1.0.0.tar.gz
103
96
  ```
104
97
 
105
98
  ## 命令详解
@@ -128,7 +121,7 @@ pv c <project-name>
128
121
  - `text` - 文本
129
122
  - `indicator` - 指标
130
123
  - `interaction` - 交互
131
- - `other` - 其他
124
+ - `other` - 其他(默认选中,推荐)
132
125
 
133
126
  2. **TypeScript 支持**:
134
127
  - `yes` - 启用 TypeScript
@@ -137,6 +130,7 @@ pv c <project-name>
137
130
  3. **图表命名规则**:
138
131
  - 必须以小写字母开头
139
132
  - 仅允许小写字母、数字、下划线
133
+ - 长度 1-100 字符
140
134
  - 推荐添加自定义前缀防止冲突
141
135
 
142
136
  **示例**:
@@ -154,15 +148,13 @@ pv create custom_bar_chart
154
148
 
155
149
  图表创建位置取决于当前工作目录:
156
150
 
157
- - **图表库根目录运行**(有 `package.json` + `packages/components` + `packages/tailored`):
158
- - 默认:`packages/components/<project-name>/`
159
- - 当前目录包含 "tailored":`packages/tailored/<project-name>/`
151
+ - **当前目录或其上级目录(最多向上 10 层)具备图表库特征**(`package.json` 包名含 `pangu` + `packages/components` + `packages/tailored`):
152
+ - 在特征目录下归位:`packages/components/<project-name>/`
153
+ - 运行路径包含 "tailored" 时:`packages/tailored/<project-name>/`
160
154
 
161
- - **其他目录运行**(如子目录、临时目录、独立项目):
155
+ - **其他目录**:
162
156
  - 当前目录下创建:`./<project-name>/`
163
157
 
164
- > 💡 **提示**:在子目录运行时,图表会在当前目录创建,不会跳转到根目录 `packages/`。
165
-
166
158
  **自动执行**:
167
159
 
168
160
  - 复制模板文件
@@ -201,14 +193,13 @@ pv build packages/components/my-chart
201
193
 
202
194
  **打包流程**:
203
195
 
204
- 1. 版本同步(`base.json` ↔ `package.json`)
196
+ 1. 版本同步(`public/base.json` ↔ `package.json`)
205
197
  2. 执行 `pnpm build`
206
198
  3. 生成产物目录:`<chart-name>_v<version>/`
207
199
  4. 可选删除 `es/` 目录(根据配置)
208
200
  5. 过滤无用文件(`.git`, `.vscode`, `.DS_Store`, `.idea`)
209
201
  6. 打包为 tar.gz:`<chart-name>_v<version>.tar.gz`
210
202
  7. 可选删除打包目录(根据配置 `autoRemove`)
211
- 8. 可选自动上传(根据配置 `autoUpload`)
212
203
 
213
204
  **产物文件**:
214
205
 
@@ -228,12 +219,9 @@ my-chart_v1.0.0.tar.gz
228
219
 
229
220
  ```bash
230
221
  pv dev # 启动当前目录开发环境
231
- pv dev <path> # 启动指定路径开发环境
232
222
  ```
233
223
 
234
- **参数**:
235
-
236
- - `<path>` - 图表包路径
224
+ 需先 cd 到图表包目录再执行。
237
225
 
238
226
  **示例**:
239
227
 
@@ -241,146 +229,16 @@ pv dev <path> # 启动指定路径开发环境
241
229
  # 在图表包目录下执行
242
230
  cd packages/components/my-chart
243
231
  pv dev
244
-
245
- # 指定路径启动
246
- pv dev packages/components/my-chart
247
232
  ```
248
233
 
249
234
  **自动检测**:
250
235
 
251
- - 查找 `package.json` 中的 `dev` 或 `serve` 脚本
252
- - 执行 `pnpm dev` 或 `pnpm serve`
236
+ - 查找 `package.json` 中的 `dev` 脚本
237
+ - 执行 `<探测到的包管理器> run dev`
253
238
  - 实时预览图表开发效果
254
239
 
255
240
  ---
256
241
 
257
- ### pv upload - 上传图表包
258
-
259
- 上传打包后的 tar.gz 文件至泰合社区服务器。
260
-
261
- **别名**:`pv u`
262
-
263
- **前置条件**:需先通过 `pv auth` 进行用户认证。
264
-
265
- **用法**:
266
-
267
- ```bash
268
- pv upload # 上传当前目录所有 .tar.gz 文件
269
- pv upload <file.tar.gz> # 上传指定 tar.gz 文件
270
- pv upload <path> # 上传指定目录下的所有 .tar.gz 文件
271
- ```
272
-
273
- **参数**:
274
-
275
- - `<file.tar.gz>` - tar.gz 文件路径
276
- - `<path>` - 目录路径
277
-
278
- **示例**:
279
-
280
- ```bash
281
- # 用户认证(首次)
282
- pv auth
283
-
284
- # 上传当前目录所有 tar.gz
285
- pv upload
286
-
287
- # 上传指定文件
288
- pv upload my-chart_v1.0.0.tar.gz
289
-
290
- # 上传指定目录下的所有 tar.gz
291
- pv upload dist/
292
- ```
293
-
294
- **认证要求**:
295
-
296
- - 未登录时自动触发认证流程
297
- - 需输入泰合社区用户名和密码
298
- - token 自动保存,后续无需重复登录
299
-
300
- ---
301
-
302
- ### pv auth - 用户认证
303
-
304
- 登录泰合社区,获取上传权限。
305
-
306
- **别名**:`pv a`
307
-
308
- **用法**:
309
-
310
- ```bash
311
- pv auth # 交互式登录
312
- pv auth <user> <password> # 命令行登录
313
- ```
314
-
315
- **参数**:
316
-
317
- - `<user>` - 泰合社区用户名
318
- - `<password>` - 泰合社区密码
319
-
320
- **示例**:
321
-
322
- ```bash
323
- # 交互式登录(推荐)
324
- pv auth
325
- # 按提示输入用户名和密码
326
-
327
- # 命令行登录
328
- pv auth myuser mypassword
329
- ```
330
-
331
- **认证流程**:
332
-
333
- 1. 输入用户名和密码(密码经 MD5 加密)
334
- 2. 请求服务器 token
335
- 3. 保存认证信息至本地配置文件
336
-
337
- **认证信息存储位置**:
338
-
339
- ```
340
- ~/.pangu-vis-store/.cli_store
341
- ```
342
-
343
- **认证失败处理**:
344
-
345
- - 失败后可重试(最多 3 次)
346
- - 失败 3 次后提示稍后尝试
347
-
348
- ---
349
-
350
- ### pv tar - tar 打包工具
351
-
352
- 通用的 tar.gz 打包命令,可打包任意目录或文件。
353
-
354
- **别名**:`pv t`
355
-
356
- **用法**:
357
-
358
- ```bash
359
- pv tar <targetDir> <name> [distDir] [distName]
360
- ```
361
-
362
- **参数**:
363
-
364
- - `<targetDir>` - 目标目录(必需)
365
- - `<name>` - 打包文件名(必需)
366
- - `<distDir>` - 输出目录(可选,默认为 targetDir)
367
- - `<distName>` - 输出文件名(可选,默认为 name)
368
-
369
- **示例**:
370
-
371
- ```bash
372
- # 打包当前目录下的 dist 为 dist.tar.gz
373
- pv tar ./dist dist
374
-
375
- # 打包并指定输出目录
376
- pv tar ./dist dist ./output
377
-
378
- # 打包并指定输出文件名
379
- pv tar ./dist dist ./output my-dist
380
- ```
381
-
382
- ---
383
-
384
242
  ### pv config - 配置管理
385
243
 
386
244
  配置 CLI 工具的自动化行为。
@@ -397,7 +255,6 @@ pv config
397
255
 
398
256
  | 配置项 | 说明 | 默认值 |
399
257
  | -------------- | ------------------------------ | ------------ |
400
- | `autoUpload` | 图表打包后是否自动上传泰合社区 | `no` (false) |
401
258
  | `autoRemove` | 打包后是否自动删除打包目录 | `yes` (true) |
402
259
  | `autoRemoveEs` | 打包后是否移除 es 目录 | `yes` (true) |
403
260
 
@@ -418,12 +275,10 @@ pv config
418
275
 
419
276
  ```json
420
277
  {
421
- "user": "your-username",
422
- "password": "your-password",
423
- "token": "your-token",
424
- "autoUpload": false,
425
278
  "autoRemove": true,
426
- "autoRemoveEs": true
279
+ "autoRemoveEs": true,
280
+ "lastUpdateCheck": 1788480000000,
281
+ "privateRegistry": "http://192.168.12.88:10000"
427
282
  }
428
283
  ```
429
284
 
@@ -443,10 +298,9 @@ pv update
443
298
 
444
299
  **更新流程**:
445
300
 
446
- 1. 检查 npm 是否有新版本
447
- 2. 提示是否更新
448
- 3. 执行全局安装:`npm i -g pangu-vis-cli`
449
- 4. macOS/Linux 自动启用 sudo(如需)
301
+ 1. 检查 npm 源最新版本
302
+ 2. 安装前确认提示「是否安装 <版本>?」(默认 yes,可跳过;跳过后提示稍后可再运行 `pvis update`)
303
+ 3. 优先用探测到的 pnpm(不可用时回退 npm)执行 `install -g pangu-vis-cli@latest`
450
304
 
451
305
  **示例**:
452
306
 
@@ -455,10 +309,11 @@ pv update
455
309
  pv update
456
310
 
457
311
  # 已是最新版本提示
458
- 当前版本已是最新!
312
+ 当前已是最新版本 1.1.0
459
313
 
460
314
  # 有新版本时提示
461
- 是否更新Cli工具? yes/no
315
+ 发现新版本 1.2.0,当前版本 1.1.0
316
+ 是否安装 1.2.0?
462
317
  ```
463
318
 
464
319
  **自动检查**:
@@ -478,16 +333,16 @@ CLI 配置信息存储在用户主目录:
478
333
  ~/.pangu-vis-store/.cli_store
479
334
  ```
480
335
 
336
+ 可通过环境变量 `PANGU_CONFIG_DIR` 覆盖配置目录位置。
337
+
481
338
  ### 配置项说明
482
339
 
483
- | 配置项 | 类型 | 说明 | 默认值 |
484
- | -------------- | ------- | ----------------------- | ------- |
485
- | `user` | string | 泰合社区用户名 | `''` |
486
- | `password` | string | 泰合社区密码(MD5加密) | `''` |
487
- | `token` | string | 认证 token | `''` |
488
- | `autoUpload` | boolean | 打包后自动上传 | `false` |
489
- | `autoRemove` | boolean | 打包后删除打包目录 | `true` |
490
- | `autoRemoveEs` | boolean | 打包后删除 es 目录 | `true` |
340
+ | 配置项 | 类型 | 说明 | 默认值 |
341
+ | ----------------- | ------- | ------------------------------------------------------------ | ---------- |
342
+ | `autoRemove` | boolean | 打包后是否自动删除打包目录 | `true` |
343
+ | `autoRemoveEs` | boolean | 打包后是否自动删除 es 目录 | `true` |
344
+ | `lastUpdateCheck` | number | 更新检查节流时间戳(可选) | |
345
+ | `privateRegistry` | string | 私有 npm 源(可选,优先级:`PANGU_REGISTRY` 环境变量 > 配置文件 > 内网默认源) | 内网默认源 |
491
346
 
492
347
  ### 修改配置
493
348
 
@@ -500,18 +355,6 @@ pv config
500
355
  **方法 2:手动编辑**
501
356
  编辑 `~/.pangu-vis-store/.cli_store` 文件。
502
357
 
503
- ### 清除认证
504
-
505
- 如需重新登录,删除配置文件中的 `token` 字段:
506
-
507
- ```bash
508
- # 编辑配置文件
509
- vi ~/.pangu-vis-store/.cli_store
510
-
511
- # 删除 token 行后重新认证
512
- pv auth
513
- ```
514
-
515
358
  ## 使用示例
516
359
 
517
360
  ### 示例:创建并打包折线图
@@ -537,16 +380,13 @@ pv build
537
380
 
538
381
  ## 命令速查表
539
382
 
540
- | 命令 | 别名 | 说明 | 是否需要认证 |
541
- | ----------- | -------- | ------------ | ------------------------ |
542
- | `pv create` | `pv c` | 创建图表包 | 可选(登录可注册图表ID) |
543
- | `pv build` | `pv b` | 单个图表打包 | ❌ |
544
- | `pv dev` | `pv d` | 启动开发环境 | ❌ |
545
- | `pv upload` | `pv u` | 上传图表包 | |
546
- | `pv auth` | `pv a` | 用户认证 | ❌ |
547
- | `pv tar` | `pv t` | tar 打包工具 | ❌ |
548
- | `pv config` | `pv set` | 配置管理 | ❌ |
549
- | `pv update` | `pv up` | CLI 更新 | ❌ |
383
+ | 命令 | 别名 | 说明 |
384
+ | ----------- | -------- | ------------ |
385
+ | `pv create` | `pv c` | 创建图表包 |
386
+ | `pv build` | `pv b` | 单个图表打包 |
387
+ | `pv dev` | `pv d` | 启动开发环境 |
388
+ | `pv config` | `pv set` | 配置管理 |
389
+ | `pv update` | `pv up` | CLI 更新 |
550
390
 
551
391
  ## 常见问题
552
392
 
@@ -561,63 +401,28 @@ sudo npm install -g pangu-vis-cli
561
401
  **Windows**:
562
402
  以管理员身份运行终端,再执行安装命令。
563
403
 
564
- ### 2. 登录认证失败
565
-
566
- - 检查用户名和密码是否正确
567
- - 确认泰合社区账号已激活
568
- - 失败 3 次后需稍后再试
569
-
570
- ### 3. 图表包名称重复
404
+ ### 2. 图表包名称重复
571
405
 
572
406
  - 使用自定义前缀避免冲突
573
- - 遵循命名规则:小写字母开头,仅允许字母、数字、下划线
407
+ - 遵循命名规则:小写字母开头,仅允许小写字母、数字、下划线
574
408
 
575
- ### 4. 打包产物找不到
409
+ ### 3. 打包产物找不到
576
410
 
577
411
  - 检查配置 `autoRemove` 是否为 `yes`
578
412
  - 打包产物默认在图表包目录下
579
- - 使用 `pv tar` 手动指定输出目录
580
-
581
- ### 5. 上传失败
582
-
583
- - 确认已通过 `pv auth` 认证
584
- - 检查网络连接(泰合社区服务器)
585
- - 确认 tar.gz 文件格式正确
586
413
 
587
- ### 6. 版本号不同步
414
+ ### 4. 版本号不同步
588
415
 
589
- - CLI 自动同步 `base.json` 和 `package.json` 版本
416
+ - CLI 自动同步 `public/base.json` 和 `package.json` 版本
590
417
  - 手动修改版本时需同时更新两个文件
591
418
  - 或使用 `pv build` 自动同步
592
419
 
593
- ### 7. 开发环境启动失败
420
+ ### 5. 开发环境启动失败
594
421
 
595
422
  - 确认已安装 `pnpm`
596
- - 检查 `package.json` 中是否有 `dev` 或 `serve` 脚本
423
+ - 检查 `package.json` 中是否有 `dev` 脚本
597
424
  - 安装依赖:`pnpm install`
598
425
 
599
- ## 开发环境(本仓库)
600
-
601
- | 项 | 要求/工具 |
602
- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
603
- | Node.js | `>=20.19.0`(engines 强制) |
604
- | TypeScript | `7.0.2`(原生编译器线,仅类型检查,esbuild 出产物;编辑器语言服务走 VS Code 内置 TS 扩展,原生 LSP 可选装 "TypeScript (Native Preview)" 扩展) |
605
- | 代码检查 | `oxlint`(配置 `.oxlintrc.json`) |
606
- | 代码格式化 | `oxfmt`(配置 `.oxfmtrc.json`,tab 缩进、行宽 100、双引号、分号、ES5 尾逗号) |
607
- | 单元测试 | `vitest`(302 用例) |
608
- | 包管理 | `nub`(兼容 pnpm 参数) |
609
-
610
- 常用开发命令(本仓库统一 `nub`,禁用 npm/pnpm/yarn/npx):
611
-
612
- ```bash
613
- nub install # 安装依赖
614
- nub run typecheck # tsc 7.0.2 类型检查
615
- nub run test:run # vitest 全量测试
616
- nub run lint # oxlint 检查
617
- nub run format:check # oxfmt 格式检查
618
- nub run build # esbuild 构建
619
- ```
620
-
621
426
  ## 许可证
622
427
 
623
428
  [MIT License](./LICENSE)
@@ -629,8 +434,3 @@ Copyright (c) 2023 Jaxon
629
434
  **Jaxon**
630
435
 
631
436
  如有问题或建议,请联系作者或在项目仓库提交 Issue。
632
-
633
- ---
634
-
635
- **最后更新**:2026-06-17
636
- **版本**:1.0.0
package/dist/index.js CHANGED
@@ -319,11 +319,6 @@ var init_process = __esm({
319
319
  init_log();
320
320
  ({ camelCase, upperFirst } = _);
321
321
  detectPackageManager = async () => {
322
- try {
323
- await $`nub --version`;
324
- return "nub";
325
- } catch {
326
- }
327
322
  try {
328
323
  await $`pnpm --version`;
329
324
  return "pnpm";
@@ -422,7 +417,7 @@ var init_package = __esm({
422
417
  "package.json"() {
423
418
  package_default = {
424
419
  name: "pangu-vis-cli",
425
- version: "1.1.0",
420
+ version: "1.2.0",
426
421
  description: "vis-cli",
427
422
  keywords: [
428
423
  "pangu-vis",
@@ -1019,7 +1014,7 @@ var init_fs = __esm({
1019
1014
  ]);
1020
1015
  return componentsExists && tailoredExists;
1021
1016
  };
1022
- scanFileFindChart = async (maxDepth = 1) => {
1017
+ scanFileFindChart = async (maxDepth = 10) => {
1023
1018
  try {
1024
1019
  const gitHit = await detectChartModuleByGit();
1025
1020
  if (gitHit) {
@@ -1027,18 +1022,14 @@ var init_fs = __esm({
1027
1022
  }
1028
1023
  } catch {
1029
1024
  }
1025
+ let dir = process.cwd();
1030
1026
  for (let i = 0; i < maxDepth; i++) {
1031
- let relativePath = "./";
1032
- if (i > 0) {
1033
- relativePath += "../".repeat(i);
1034
- }
1035
- const cwd = path4.resolve(process.cwd(), relativePath);
1036
- const packageJsonPath = path4.resolve(cwd, "package.json");
1027
+ const packageJsonPath = path4.join(dir, "package.json");
1037
1028
  if (await fs4.pathExists(packageJsonPath)) {
1038
1029
  try {
1039
1030
  const pkg = await fs4.readJson(packageJsonPath);
1040
- if (await isChartModuleRoot(cwd, pkg.name)) {
1041
- return { root: cwd };
1031
+ if (await isChartModuleRoot(dir, pkg.name)) {
1032
+ return { root: dir };
1042
1033
  }
1043
1034
  } catch (error) {
1044
1035
  if (process.env.DEBUG === "true") {
@@ -1049,6 +1040,10 @@ var init_fs = __esm({
1049
1040
  }
1050
1041
  }
1051
1042
  }
1043
+ if (dir === path4.parse(dir).root) {
1044
+ break;
1045
+ }
1046
+ dir = path4.dirname(dir);
1052
1047
  }
1053
1048
  return false;
1054
1049
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pangu-vis-cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "vis-cli",
5
5
  "keywords": [
6
6
  "pangu-vis",