pangu-chart-cli 1.0.0 → 1.0.1-beta.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.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 樱花下的市丸银
3
+ Copyright (c) 2024 Jaxon
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -21,17 +21,35 @@
21
21
  - 可视化图表库打包
22
22
  - Element Plus 二次封装组件库
23
23
 
24
+ ## 工具链
25
+
26
+ 质量门禁四层分工(各司其职,零重叠):
27
+
28
+ | 层 | 工具 | 命令 | 职责 |
29
+ | ---- | ------ | ----------------------------------- | -------------------------------------------------- |
30
+ | 类型 | tsc | `pnpm typecheck` | 类型安全、接口契约、手写声明漂移守护 |
31
+ | Lint | oxlint | `pnpm lint` | 语法反模式(correctness=error 阻断,suspicious 告警) |
32
+ | 行为 | vitest | `pnpm test` | 68 个行为测试 + 覆盖率阈值门禁 |
33
+ | 格式 | oxfmt | `pnpm format` / `pnpm format:check` | token 风格(单引号、分号、printWidth 100) |
34
+
35
+ > **oxfmt 升级纪律**:oxfmt 锁定精确版本(0.x 阶段 minor/patch 都可能改变默认输出)。升级 oxfmt 必须伴随一次全仓 reformat commit 并复验全部门禁,禁止静默升级。
36
+
24
37
  ## 安装
25
38
 
26
- ### 全局安装
39
+ ### 环境要求
40
+
41
+ - **Node.js >= 20**(包为 ESM-only,`"type": "module"`)
42
+ - 图表项目需提供 vite 生态 peer 依赖(vite ^4 及以上均可;pnpm ≥8 / npm ≥7 会自动安装 peer):
27
43
 
28
44
  ```bash
29
- npm install -g pangu-chart-cli
30
- # 或
31
- pnpm add -g pangu-chart-cli
45
+ pnpm add -D vite @vitejs/plugin-vue vite-plugin-compression vite-plugin-banner
32
46
  ```
33
47
 
34
- ### 项目依赖
48
+ - 图表项目建议在 package.json 中声明 `"type": "module"`(或在 vite 配置使用 `.mjs` 后缀),否则旧版 vite 会以 CJS 方式 `require` 本包导致失败
49
+
50
+ > **CJS 迁移说明**:自全 ESM 架构起,`require('pangu-chart-cli')` 不再受支持,请统一使用 `import`。
51
+
52
+ ### 项目依赖(推荐)
35
53
 
36
54
  ```bash
37
55
  npm install --save-dev pangu-chart-cli
@@ -39,6 +57,18 @@ npm install --save-dev pangu-chart-cli
39
57
  pnpm add -D pangu-chart-cli
40
58
  ```
41
59
 
60
+ 项目内安装后通过 npm scripts 调用(`package.json` 的 `scripts` 中使用 `vcc build`),此时 vite 可从项目 `node_modules/.bin` 解析。
61
+
62
+ ### 全局安装(不推荐)
63
+
64
+ ```bash
65
+ npm install -g pangu-chart-cli
66
+ # 或
67
+ pnpm add -g pangu-chart-cli
68
+ ```
69
+
70
+ > 全局安装的 `vcc` 依赖 PATH 上存在 `vite` 命令:若图表项目未通过 npm scripts 调用,请确保 `vite` 全局可用或在项目内运行。
71
+
42
72
  ## CLI 命令
43
73
 
44
74
  CLI 工具提供两个命令别名:`vcc` 和 `vis-chart-cli`,以下以 `vcc` 为例。
@@ -83,11 +113,15 @@ vcc build
83
113
  vcc b
84
114
  ```
85
115
 
86
- ### vcc -v
116
+ ### vcc --version / vcc -V / vcc -v
87
117
 
88
- 查看当前版本号。
118
+ 查看当前版本号(三个 flag 等价,退出码 0)。
89
119
 
90
120
  ```bash
121
+ vcc --version
122
+ # 或
123
+ vcc -V
124
+ # 或(历史别名)
91
125
  vcc -v
92
126
  ```
93
127
 
@@ -112,9 +146,18 @@ vcc -v
112
146
 
113
147
  ```javascript
114
148
  {
115
- // 全局变量定义
149
+ // 全局变量定义(白名单:仅注入 CLI 需要的 8 个 VITE_* 环境变量,不内联整机环境变量)
116
150
  define: {
117
- 'process.env': process.env || {}
151
+ 'process.env': {
152
+ VITE_CURRENT_CHART_NAME: '...',
153
+ VITE_CURRENT_CHART_VERSION: '...',
154
+ VITE_CURRENT_CHART_AUTHOR: '...',
155
+ VITE_CURRENT_CHART_ELEMENT_CONFIG: '...',
156
+ VITE_BUILD_CHART_DIR: '...',
157
+ VITE_BUILD_CHART_TIME: '...',
158
+ VITE_CURRENT_BUILD_CHART_NAME: '...',
159
+ VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR: '...'
160
+ }
118
161
  },
119
162
 
120
163
  // 插件列表
@@ -189,8 +232,8 @@ export default getConfig({
189
232
  enable: true,
190
233
  entryFile: 'src/index.vue',
191
234
  configSrc: 'element-plus/theme-chalk/src/mixins/config.scss',
192
- namespace: 'MyChart'
193
- }
235
+ namespace: 'MyChart',
236
+ },
194
237
  });
195
238
  ```
196
239
 
@@ -247,15 +290,13 @@ import { getBaseConfig } from 'pangu-chart-cli';
247
290
 
248
291
  const baseConfig = getBaseConfig({
249
292
  name: 'my-chart',
250
- version: '1.0.0'
293
+ version: '1.0.0',
251
294
  });
252
295
 
253
296
  // 自定义扩展
254
297
  export default {
255
298
  ...baseConfig,
256
- plugins: [
257
- /* 自定义插件列表 */
258
- ]
299
+ plugins: [/* 自定义插件列表 */],
259
300
  };
260
301
  ```
261
302
 
@@ -295,7 +336,7 @@ import { getPackageInfo } from 'pangu-chart-cli';
295
336
 
296
337
  const info = getPackageInfo({
297
338
  name: 'my-chart',
298
- version: '1.0.0'
339
+ version: '1.0.0',
299
340
  });
300
341
 
301
342
  console.log(info);
@@ -318,7 +359,7 @@ console.log(info);
318
359
  getConfig({
319
360
  name: 'my-chart',
320
361
  version: '1.0.0',
321
- elementConfig: false
362
+ elementConfig: false,
322
363
  });
323
364
  ```
324
365
 
@@ -341,7 +382,7 @@ getConfig({
341
382
  getConfig({
342
383
  name: 'my-chart',
343
384
  version: '1.0.0',
344
- elementConfig: true
385
+ elementConfig: true,
345
386
  });
346
387
 
347
388
  // 实际配置:
@@ -383,8 +424,8 @@ getConfig({
383
424
  enable: true,
384
425
  entryFile: 'src/components/Chart.vue',
385
426
  configSrc: 'element-plus/theme-chalk/src/mixins/config.scss',
386
- namespace: 'MyCustomChart'
387
- }
427
+ namespace: 'MyCustomChart',
428
+ },
388
429
  });
389
430
  ```
390
431
 
@@ -416,92 +457,6 @@ getConfig({
416
457
 
417
458
  3. **避免样式冲突**:所有 Element Plus 组件样式都会使用自定义 namespace,避免与其他 Element Plus 组件库产生样式冲突。
418
459
 
419
- ## 项目结构
420
-
421
- ```
422
- pangu-chart-cli/
423
- ├── bin/
424
- │ └── index.js # CLI 入口(指向 dist/index.js)
425
- ├── core/
426
- │ ├── index.js # 命令注册(commander)
427
- │ ├── dev/
428
- │ │ └── index.js # dev 命令逻辑
429
- │ └── build/
430
- │ └── index.js # build 命令逻辑
431
- ├── viteConfig/
432
- │ ├── index.js # getConfig API 实现
433
- │ ├── base.js # getBaseConfig/getPackageInfo 实现
434
- │ ├── default.js # 默认 Vite 配置模板
435
- │ └── vite-plugin-element-namespace.js # Element namespace 插件
436
- ├── index.d.ts # TypeScript 类型定义
437
- ├── package.json
438
- ├── rollup.config.js # Rollup 打包配置
439
- └── dist/ # 打包输出目录
440
- ```
441
-
442
- ## 开发指南
443
-
444
- ### 本地构建
445
-
446
- 使用 bun + rollup 进行本地构建:
447
-
448
- ```bash
449
- pnpm build
450
- ```
451
-
452
- 构建流程:
453
-
454
- 1. `bun ./build/index.js` - 预处理
455
- 2. `rollup --config` - 打包生成 `dist/` 目录
456
-
457
- ### 发布流程
458
-
459
- 使用 `standard-version` 管理版本和生成 CHANGELOG:
460
-
461
- ```bash
462
- # Patch 版本(1.0.0 -> 1.0.1)
463
- pnpm release:patch
464
-
465
- # Minor 版本(1.0.0 -> 1.1.0)
466
- pnpm release:minor
467
-
468
- # Major 版本(1.0.0 -> 2.0.0)
469
- pnpm release:major
470
-
471
- # Beta 版本(1.0.0 -> 1.0.1-beta.0)
472
- pnpm release:beta
473
- ```
474
-
475
- 发布到 npm:
476
-
477
- ```bash
478
- npm publish
479
- ```
480
-
481
- ### 依赖说明
482
-
483
- **运行时依赖**:
484
-
485
- - `commander` - CLI 框架
486
- - `chalk` - 终端颜色输出
487
- - `ora` - 终端加载动画
488
- - `cross-spawn` - 跨平台进程执行
489
- - `dayjs` - 时间处理
490
- - `await-to-js` - 异步错误处理
491
- - `yann-fs` - 文件系统工具
492
-
493
- **开发依赖**:
494
-
495
- - `rollup` - 打包工具
496
- - `vite` - 构建核心(用户项目运行时依赖)
497
- - `standard-version` - 版本管理
498
-
499
- **用户项目需要安装**:
500
-
501
- - `vite` - 构建工具
502
- - `element-plus` - Element Plus 组件库(若使用 elementConfig)
503
- - `@vitejs/plugin-vue` - Vue 插件
504
-
505
460
  ### 常见问题
506
461
 
507
462
  **Q: Element Plus 未安装时使用 elementConfig 会报错吗?**
@@ -523,27 +478,3 @@ A: 输出目录格式为 `<组件名>_v<版本号>`,例如 `my-chart_v1.0.0`。
523
478
  **Q: UMD 全局变量名命名规则?**
524
479
 
525
480
  A: UMD name 格式为 `<大写组件名>_v<版本号>`(`.` 替换为 `_`),例如 `My-chart_v1_0_0`。
526
-
527
- ## License
528
-
529
- MIT License
530
-
531
- Copyright (c) 2024 Yann
532
-
533
- Permission is hereby granted, free of charge, to any person obtaining a copy
534
- of this software and associated documentation files (the "Software"), to deal
535
- in the Software without restriction, including without limitation the rights
536
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
537
- copies of the Software, and to permit persons to whom the Software is
538
- furnished to do so, subject to the following conditions:
539
-
540
- The above copyright notice and this permission notice shall be included in all
541
- copies or substantial portions of the Software.
542
-
543
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
544
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
545
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
546
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
547
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
548
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
549
- SOFTWARE.
package/bin/index.js CHANGED
@@ -1,3 +1,4 @@
1
- #! /usr/bin/env node
2
-
3
- require('../dist/index.js');
1
+ #!/usr/bin/env node
2
+ /** @file CLI 可执行入口:转发到构建产物 dist/index.js(vcc 与 vis-chart-cli 两个 bin 名共用) */
3
+
4
+ import '../dist/index.js';
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- "use strict";const t=require("yann-fs").default,i=require("fs").promises,e=require("path"),{getCurrentDir:s,runCommandAsync:a,initEnv:n}=require("../utils"),r=async(t=process.cwd())=>{const s=await i.readdir(t);for(const a of s){const s=e.join(t,a);(await i.stat(s)).isDirectory()?await r(s):(/^\._/.test(a)||/^\.DS/.test(a))&&await i.unlink(s)}};module.exports=async function(){const i=s();await n(i);const o=e.resolve(i,"vite.config.js"),c=e.resolve(i,"vite.config.ts");await t.exists(o)||await t.exists(c)?await a(["build"],{cwd:i}):await a(["build","-c",e.resolve(__dirname,"../viteConfig/default.js")],{cwd:i}),await r(i)};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a as r,b as c,c as o}from"../chunk-DKI5UHYE.js";import f from"fs-extra";import n from"node:fs/promises";import a from"node:path";import{fileURLToPath as d}from"node:url";var m=a.dirname(d(import.meta.url)),u=new Set(["node_modules",".git"]),l=async(t=process.cwd())=>{let e=await n.readdir(t);for(let s of e){if(u.has(s))continue;let i=a.join(t,s);(await n.stat(i)).isDirectory()?await l(i):(s.startsWith("._")||s.startsWith(".DS"))&&await n.unlink(i)}};async function w(){let t=r();await c(t);let e=a.resolve(t,"vite.config.js"),s=a.resolve(t,"vite.config.ts"),i;if(!await f.pathExists(e)&&!await f.pathExists(s)?i=await o(["build","-c",a.resolve(m,"../viteConfig/default.js")],{cwd:t}):i=await o(["build"],{cwd:t}),!i?.success){process.exitCode=1;return}await l(t)}export{w as default};
@@ -0,0 +1,5 @@
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import f from"fs-extra";import _ from"node:path";import I from"dayjs";import b from"cross-spawn";var U=()=>{let e=process.cwd(),s=n=>n.split(_.sep).includes("example");for(;s(e);){let n=_.dirname(e);if(n===e)break;e=n}return e},H=async e=>{e=e||U(),await k(e);let s=_.resolve(e,"package.json"),n;try{n=await f.readJson(s)}catch{throw new Error("\u6267\u884C\u5931\u8D25\uFF0C\u5F53\u524D\u56FE\u8868\u627E\u4E0D\u5230 package.json \u6587\u4EF6")}process.env.VITE_CURRENT_CHART_NAME=n.name,process.env.VITE_CURRENT_CHART_VERSION=n.version,n.author!==void 0&&(process.env.VITE_CURRENT_CHART_AUTHOR=n.author),process.env.VITE_CURRENT_CHART_ELEMENT_CONFIG="elementConfig"in n?JSON.stringify(n.elementConfig):"false",process.env.VITE_BUILD_CHART_DIR=e,process.env.VITE_BUILD_CHART_TIME=I().format("YYYY-MM-DD HH:mm");let t=()=>{let o=n.name.split("/").at(-1)??"",l=o.replace(/^\S/,m=>m.toUpperCase())+"_v"+n.version.replaceAll(".","_"),a=`${o}_v${n.version}`;return{VITE_CURRENT_BUILD_CHART_NAME:l,VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR:a}},{VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR:r,VITE_CURRENT_BUILD_CHART_NAME:u}=t();process.env.VITE_CURRENT_BUILD_CHART_NAME=u,process.env.VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR=r},y=async(e,s)=>await h(w(s?.cwd),e,s),P=async(e,s)=>await h(w(s?.cwd),e,s),h=(e,s=[],n={})=>new Promise(t=>{let r=process.platform==="win32",{enableSudo:u=!1,disableColor:o=!1,cwd:l=process.cwd(),stdio:a="inherit",shell:m=!1,...R}=n,T=e,d=[...s];o&&r&&!d.includes("--no-color")&&d.push("--no-color"),!r&&u&&(T="sudo",d=[e,...d]);let A={cwd:l,stdio:a,shell:m,...R},C=b(T,d,A),v=[],N=[];C.stdout?.on("data",c=>{v.push(String(c))}),C.stderr?.on("data",c=>{N.push(String(c))}),C.on("error",c=>{let E=c.message||"\u547D\u4EE4\u542F\u52A8\u5931\u8D25",i="",g=c.code;g==="ENOENT"?i=String(e).includes("vite")?"\u672A\u627E\u5230 vite\uFF1A\u8BF7\u5728\u56FE\u8868\u9879\u76EE\u4E2D\u5B89\u88C5 vite \u4E0E\u76F8\u5173 peer \u4F9D\u8D56\uFF08pnpm add -D vite @vitejs/plugin-vue vite-plugin-compression vite-plugin-banner\uFF09\uFF0C\u6216\u901A\u8FC7 npm scripts \u8FD0\u884C vcc":`\u672A\u627E\u5230\u547D\u4EE4 "${e}"\uFF0C\u8BF7\u5148\u5B89\u88C5 ${e}`:g==="EACCES"?i=r?"\u6743\u9650\u4E0D\u8DB3\uFF01\u8BF7\u4EE5\u7BA1\u7406\u5458\u8EAB\u4EFD\u8FD0\u884C\u7EC8\u7AEF":"\u6743\u9650\u4E0D\u8DB3\uFF01\u8BF7\u786E\u8BA4\u5F53\u524D\u7528\u6237\u6709\u6267\u884C\u6743\u9650\uFF08\u53EF\u5C1D\u8BD5 sudo\uFF09":i=`\u547D\u4EE4\u542F\u52A8\u5931\u8D25\uFF1A${E}`,console.error(i),t({success:!1,stdout:"",stderr:E,status:null,message:i,error:c.stack||E})}),C.on("close",c=>{let E=v.join("").trim(),i=N.join("").trim(),g=c===0,p="";g?p=`\u547D\u4EE4\u6267\u884C\u6210\u529F\uFF1A${e} ${d.join(" ")}`:(i.includes("not found")||i.includes("Package")?p=`\u672A\u627E\u5230\u76EE\u6807\u8D44\u6E90\uFF1A${i.split(`
3
+ `)[0]}`:i.includes("EAI_AGAIN")||i.includes("network")||i.includes("ENOTFOUND")?p="\u7F51\u7EDC\u9519\u8BEF\uFF1A\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u6216\u955C\u50CF\u6E90\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u914D\u7F6E":i.includes("EACCES")?p=r?"\u6743\u9650\u4E0D\u8DB3\uFF01\u8BF7\u4EE5\u7BA1\u7406\u5458\u8EAB\u4EFD\u8FD0\u884C\u7EC8\u7AEF":"\u6743\u9650\u4E0D\u8DB3\uFF01\u53EF\u5C1D\u8BD5\u542F\u7528 sudo":p=`\u547D\u4EE4\u6267\u884C\u5931\u8D25\uFF08\u9000\u51FA\u7801\uFF1A${c}\uFF09\uFF1A${i||"\u65E0\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F"}`,console.error(p)),t({success:g,stdout:E,stderr:i,status:c,message:p,error:g?null:i||`\u9000\u51FA\u7801\uFF1A${c}`})})}),w=(e=process.cwd())=>{let s=process.platform==="win32"?"vite.cmd":"vite",n=_.join(e,"node_modules",".bin",s);return f.existsSync(n)?n:"vite"};function O(e,s){e.indexOf("v")===0&&(e=e.slice(1)),s.indexOf("v")===0&&(s=s.slice(1));let n=o=>{let[l,a]=o.split("-"),m=l.split(".").map(R=>parseInt(R,10));return{nums:m,pre:a??null,invalid:m.some(Number.isNaN)}},t=n(e),r=n(s);if(t.invalid||r.invalid)return NaN;let u=Math.max(t.nums.length,r.nums.length);for(let o=0;o<u;o++){let l=t.nums[o]??0,a=r.nums[o]??0;if(l>a)return 1;if(l<a)return-1}return t.pre===null&&r.pre===null?0:t.pre===null?1:r.pre===null?-1:t.pre===r.pre?0:t.pre>r.pre?1:-1}var k=async e=>{let s=_.resolve(e,"public","base.json"),n;try{n=await f.readJson(s)}catch{throw new Error("\u6267\u884C\u5931\u8D25\uFF0C\u5F53\u524D\u56FE\u8868\u627E\u4E0D\u5230 base.json \u6587\u4EF6")}let t=n.version,r=_.resolve(e,"package.json"),u;try{u=await f.readJson(r)}catch{throw new Error("\u6267\u884C\u5931\u8D25\uFF0C\u5F53\u524D\u56FE\u8868\u627E\u4E0D\u5230 package.json \u6587\u4EF6")}let o=u.version;if(String(t).includes("-")||String(o).includes("-"))return console.warn(`\u68C0\u6D4B\u5230\u9884\u53D1\u5E03\u7248\u672C\u53F7\uFF08base.json: ${t} / package.json: ${o}\uFF09\uFF0C\u8DF3\u8FC7\u81EA\u52A8\u7248\u672C\u540C\u6B65\uFF0C\u8BF7\u4EBA\u5DE5\u786E\u8BA4`),{name:n.name,version:t};let l=O(t,o),a=t;return l===1?(a=t,u.version=a,await f.outputJson(r,u,{spaces:2,EOL:`
4
+ `})):l===-1&&(a=o,n.version=a,await f.outputJson(s,n,{spaces:2,EOL:`
5
+ `})),{name:n.name,version:a}};export{U as a,H as b,y as c,P as d,h as e,w as f,O as g,k as h};
package/dist/dev/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- "use strict";const e=require("path"),s=require("yann-fs").default,{getCurrentDir:i,runDevSpawn:t,initEnv:a}=require("../utils"),n=["dev","--host","0.0.0.0"];module.exports=async function(){const o=i();await a(o);const r=e.resolve(o,"example"),c=e.resolve(r,"package.json");if(await s.exists(c)){const i=e.resolve(r,"vite.config.js"),a=e.resolve(r,"vite.config.ts");await s.exists(i)||await s.exists(a)||n.push("--config",e.resolve(__dirname,"../viteConfig/default.js")),await t(n,{cwd:r})}else{const i=e.resolve(o,"vite.config.js"),a=e.resolve(o,"vite.config.ts");await s.exists(i)||await s.exists(a)||n.push("--config",e.resolve(__dirname,"../viteConfig/default.js")),await t(n,{cwd:o})}};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a as c,b as f,d as s}from"../chunk-DKI5UHYE.js";import t from"node:path";import{fileURLToPath as p}from"node:url";import o from"fs-extra";var h=t.dirname(p(import.meta.url)),v="0.0.0.0";async function m(){let e=["dev","--host",v],a=c();await f(a);let i=t.resolve(a,"example"),l=t.resolve(i,"package.json");if(await o.pathExists(l)){let n=t.resolve(i,"vite.config.js"),r=t.resolve(i,"vite.config.ts");!await o.pathExists(n)&&!await o.pathExists(r)?(e.push("--config",t.resolve(h,"../viteConfig/default.js")),await s(e,{cwd:i})):await s(e,{cwd:i})}else{let n=t.resolve(a,"vite.config.js"),r=t.resolve(a,"vite.config.ts");!await o.pathExists(n)&&!await o.pathExists(r)?(e.push("--config",t.resolve(h,"../viteConfig/default.js")),await s(e,{cwd:a})):await s(e,{cwd:a})}}export{m as default};
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- "use strict";const{program:e}=require("commander"),{version:r}=require("../package.json"),s=require("chalk");e.command("build").alias("b").description("打包").action((async()=>{await require("./build/index.js")()})),e.command("dev").alias("d").description("启动服务").action((async()=>{await require("./dev/index.js")()})),"-v"===process.argv[2]&&(console.log(r),process.exit(1)),e.version(r).parse(process.argv),process.on("uncaughtException",(function(e){console.log(s.bold.red("err"),s.bold.red(e?.message||"异常错误!")),process.exit(1)}));
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{program as e}from"commander";import{createRequire as a}from"node:module";import s from"chalk";var{version:c}=a(import.meta.url)("../package.json");e.command("build").alias("b").description("\u6253\u5305").action(async()=>{(await import("./build/index.js")).default()});e.command("dev").alias("d").description("\u542F\u52A8\u670D\u52A1").action(async()=>{(await import("./dev/index.js")).default()});var n=process.argv[2]==="-v"?[process.argv[0],process.argv[1],"--version",...process.argv.slice(3)]:process.argv;e.version(c,"-V, --version","\u8F93\u51FA\u5F53\u524D\u7248\u672C\u53F7").parseAsync(n).catch(o=>{let r=o instanceof Error?o.message:String(o);console.error(s.bold.red("err\uFF1A"),s.bold.red(r||"\u5F02\u5E38\u9519\u8BEF\uFF01")),o instanceof Error&&o.stack&&console.error(s.dim(o.stack)),process.exitCode=1});process.on("uncaughtException",function(o){let r=o?.message||"\u5F02\u5E38\u9519\u8BEF\uFF01";console.error(s.bold.red("err\uFF1A"),s.bold.red(r)),o?.stack&&console.error(s.dim(o.stack)),process.exit(1)});
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- "use strict";const e=require("yann-fs").default,s=require("path"),n=require("dayjs"),o=()=>{let e=process.cwd();for(;e.includes("example");)e=s.resolve(e,"..");return e},r=(e,s=[],n={})=>new Promise((o=>{const r="win32"===process.platform,{enableSudo:t=!1,disableColor:a=!1,cwd:i=process.cwd(),stdio:c="inherit",shell:l=!1,..._}=n;let u=e,E=[...s];a&&r&&!E.includes("--no-color")&&E.push("--no-color"),!r&&t&&(u="sudo",E=[e,...E]);const T={cwd:i,stdio:c,shell:l,..._},p=require("cross-spawn")(u,E,T),d=[],R=[];p.stdout?.on("data",(e=>{d.push(e.toString())})),p.stderr?.on("data",(e=>{R.push(e.toString())})),p.on("error",(s=>{const n=s.message||"命令启动失败";let t="";t="ENOENT"===s.code?`未找到命令 "${e}",请先安装 ${e}`:"EACCES"===s.code?r?"权限不足!请以管理员身份运行终端":"权限不足!请确认当前用户有执行权限(可尝试 sudo)":`命令启动失败:${n}`,log.err(t),o({success:!1,stdout:"",stderr:n,status:null,message:t,error:s.stack||n})})),p.on("close",(s=>{const n=d.join("").trim(),t=R.join("").trim(),a=0===s;let i="";a?i=`命令执行成功:${e} ${E.join(" ")}`:(i=t.includes("not found")||t.includes("Package")?`未找到目标资源:${t.split("\n")[0]}`:t.includes("EAI_AGAIN")||t.includes("network")||t.includes("ENOTFOUND")?"网络错误:无法连接到服务或镜像源,请检查网络配置":t.includes("EACCES")?r?"权限不足!请以管理员身份运行终端":"权限不足!可尝试启用 sudo":`命令执行失败(退出码:${s}):${t||"无详细错误信息"}`,log.err(i)),o({success:a,stdout:n,stderr:t,status:s,message:i,error:a?null:t||`退出码:${s}`})}))}));const t=async n=>{const o=s.resolve(n,"public","base.json"),[r,t]=await e.readJson(o);if(r)throw new Error("执行失败,当前图表找不到 base.json 文件");const a=t.version,i=s.resolve(n,"package.json"),[c,l]=await e.readJson(i);if(c)throw new Error("执行失败,当前图表找不到 package.json 文件");const _=l.version,u=function(e,s){0===e.indexOf("v")&&(e=e.slice(1)),0===s.indexOf("v")&&(s=s.slice(1)),e=e.split("."),s=s.split(".");const n=Math.max(e.length,s.length);for(;e.length<n;)e.push("0");for(;s.length<n;)s.push("0");for(let o=0;o<n;o++){const n=parseInt(e[o]),r=parseInt(s[o]);if(n>r)return 1;if(n<r)return-1}return 0}(a,_);let E=a;return 1===u?(E=a,l.version=E,await e.outputJson(i,l,{spaces:2,EOL:"\n"})):-1===u&&(E=_,t.version=E,await e.outputJson(o,t,{spaces:2,EOL:"\n"})),{name:t.name,version:E}};module.exports={getCurrentDir:o,runCommandAsync:async(e,s)=>{await r("vite",e,s)},initEnv:async r=>{r=r||o(),await t(r);const a=s.resolve(r,"package.json"),[i,c]=await e.readJson(a);if(i)throw new Error("执行失败,当前图表找不到 package.json 文件");process.env.VITE_CURRENT_CHART_NAME=c.name,process.env.VITE_CURRENT_CHART_VERSION=c.version,process.env.VITE_CURRENT_CHART_AUTHOR=c.author,process.env.VITE_CURRENT_CHART_ELEMENT_CONFIG="elementConfig"in c?JSON.stringify(c.elementConfig):"false",process.env.VITE_BUILD_CHART_DIR=r,process.env.VITE_BUILD_CHART_TIME=n().format("YYYY-MM-DD HH:mm");const{VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR:l,VITE_CURRENT_BUILD_CHART_NAME:_}=(()=>{const e=c.name.split("/").at(-1);return{VITE_CURRENT_BUILD_CHART_NAME:e.replace(/^\S/,(e=>e.toUpperCase()))+"_v"+c.version.replaceAll(".","_"),VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR:`${e}_v${c.version}`}})();process.env.VITE_CURRENT_BUILD_CHART_NAME=_,process.env.VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR=l},runDevSpawn:async(e,s)=>{await r("vite",e,s)},versionHandle:t};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a,b,c,d,e,f,g,h}from"../chunk-DKI5UHYE.js";export{g as compareVersion,a as getCurrentDir,b as initEnv,f as resolveViteCommand,e as runAsyncCmd,c as runCommandAsync,d as runDevSpawn,h as versionHandle};
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- import e from"@vitejs/plugin-vue";import n from"vite-plugin-compression";import r from"vite-plugin-banner";import{getBaseConfig as o,getPackageInfo as i}from"./index.js";import s from"./vite-plugin-element-namespace.js";import t from"node:path";import"@vue/compiler-sfc";const c=e=>e.replace(/\\/g,"/"),a=()=>{let e=process.cwd();for(;e.includes("example");)e=t.resolve(e,"..");return e},p=(e,n)=>{const r="object"==typeof e&&!Array.isArray(e),o=r&&"enable"in e?e.enable:!!e;if(!o)return{enable:o};const i="src/index.vue",s="element-plus/theme-chalk/src/mixins/config.scss";return{enable:o,entryFile:(e=>t.isAbsolute(e)?c(t.normalize(e)):c(t.resolve(a(),e)))(r&&e?.entryFile||i),configSrc:r&&e?.configSrc||s,namespace:r&&e?.namespace||n}},l=t=>{const c=o(t),{elementConfig:l,name:m}=i(t),u=a(),f=u?u+"/":"",{enable:v,entryFile:d,configSrc:g,namespace:b}=p(l,m),h=[],y={};return v&&(h.push(s({entryFile:d,namespace:b})),y.css={preprocessorOptions:{scss:{additionalData:`@forward '${g}' with (\n $namespace: '${b}'\n);`}}}),{define:{"process.env":process.env||{}},plugins:[...h,e({isProduction:!0}),n({ext:".gz",deleteOriginFile:!1}),r({outDir:f+c.build.outDir,content:`${t.name} v${t.version} ${t.author?"Author: "+t.author:""} Date: ${process.env.VITE_BUILD_CHART_TIME?process.env.VITE_BUILD_CHART_TIME:Date.now()}`})],server:{host:"0.0.0.0"},...y,build:c.build}};export{l as getConfig};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a}from"./chunk-LFITEGP6.js";import"./chunk-MQN57SH7.js";import"./chunk-OVGQS7LQ.js";export{a as getConfig};
@@ -0,0 +1,4 @@
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a as m}from"./chunk-MQN57SH7.js";import{a as T,b as u}from"./chunk-OVGQS7LQ.js";import d from"@vitejs/plugin-vue";import g from"vite-plugin-compression";import I from"vite-plugin-banner";import r from"node:path";var f=e=>e.replace(/\\/g,"/"),R=()=>{let e=process.cwd(),t=n=>n.split(r.sep).includes("example");for(;t(e);){let n=r.dirname(e);if(n===e)break;e=n}return e},C=e=>r.isAbsolute(e)?f(r.normalize(e)):f(r.resolve(R(),e)),b=(e,t)=>{let n=typeof e=="object"&&!Array.isArray(e),s=(n&&"enable"in e?e.enable:!!e)??!1;if(!s)return{enable:s};let i="src/index.vue",o="element-plus/theme-chalk/src/mixins/config.scss",c=C(n&&e?.entryFile||i),a=n&&e?.configSrc||o,l=n&&e?.namespace||t;return{enable:s,entryFile:c,configSrc:a,namespace:l}},O=e=>{let t=u(e),{elementConfig:n,name:s}=T(e),o=R()+"/",{enable:c,entryFile:a,configSrc:l,namespace:p}=b(n,s),E=[],_={};return c&&(E.push(m({entryFile:a,namespace:p})),_.css={preprocessorOptions:{scss:{additionalData:`@forward '${l}' with (
3
+ $namespace: '${p}'
4
+ );`}}}),{define:{"process.env":v()},plugins:[...E,d({isProduction:!0}),g({ext:".gz",deleteOriginFile:!1}),I({outDir:o+t.build.outDir,content:`${e.name} v${e.version} ${e.author?"Author: "+e.author:""} Date: ${process.env.VITE_BUILD_CHART_TIME?process.env.VITE_BUILD_CHART_TIME:Date.now()}`})],server:{host:"0.0.0.0"},..._,build:t.build}},A=["VITE_CURRENT_CHART_NAME","VITE_CURRENT_CHART_VERSION","VITE_CURRENT_CHART_AUTHOR","VITE_CURRENT_CHART_ELEMENT_CONFIG","VITE_BUILD_CHART_DIR","VITE_BUILD_CHART_TIME","VITE_CURRENT_BUILD_CHART_NAME","VITE_CURRENT_BUILD_CHART_NAME_OUT_DIR"],v=()=>Object.fromEntries(A.filter(e=>process.env[e]!==void 0).map(e=>[e,process.env[e]]));export{O as a};
@@ -0,0 +1,13 @@
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{parse as g}from"@vue/compiler-sfc";function f(s){let{entryFile:i,namespace:e}=s;return!i||!e?(console.warn("\u8BF7\u63D0\u4F9B\u5165\u53E3\u6587\u4EF6\u8DEF\u5F84\u548C\u76EE\u6807\u547D\u540D\u7A7A\u95F4"),{name:"element-namespace-plugin"}):{name:"element-namespace-plugin",transform(n,r){if(r!==i)return n;try{let{descriptor:t}=g(n,{filename:r});if(!t.template)return n;let{newTemplateContent:p,templateModified:o}=u(t.template.content,e),c=n;return o&&(c=h(c,p)),c}catch(t){return console.error("\u5904\u7406\u547D\u540D\u7A7A\u95F4\u548C\u5BFC\u5165\u65F6\u51FA\u9519:",t),n}}}}function u(s,i){let e=/<(el-config-provider|ElConfigProvider)([^>]*?)>/i,n=e.test(s),r=s,t=!1;if(!n)r=`
3
+ <el-config-provider namespace="${i}">
4
+ ${s}
5
+ </el-config-provider>
6
+ `.trim(),t=!0;else{let p=s.match(e),o=p?.[1]??"",c=p?.[2]??"";if(!/namespace\s*=\s*["'].*?["']/i.test(c)){let l=c.trim(),m=l?`${l} namespace="${i}"`:`namespace="${i}"`;r=s.replace(e,`<${o} ${m}>`),t=!0}}return{newTemplateContent:r,templateModified:t}}function d(s,i){let e=/(<script[\s\S]*?>[\s\S]*?<\/script>)/gi,n=[],r=s;r=r.replace(e,c=>(n.push(c),`__SCRIPT_PLACEHOLDER_${n.length-1}__`));let t=/(<template>)([\s\S]*)(<\/template>)/,o=r.replace(t,`$1
7
+ ${i}
8
+ $3`);return n.forEach((c,a)=>{o=o.replace(`__SCRIPT_PLACEHOLDER_${a}__`,c)}),o}function h(s,i){let e=d(s,i);if(/import\s+.*?(ElConfigProvider).*?\s+from\s+['"]element-plus['"]/i.test(e))return e;let r=/<script([^>]*?)>/i,t=e.match(r),p=`import { ElConfigProvider } from 'element-plus';
9
+ `;if(t){let o=(t.index??0)+t[0].length;e=e.substring(0,o)+`
10
+ `+p+e.substring(o)}else e+=`
11
+
12
+ <script setup>
13
+ ${p}</script>`;return e}export{f as a};
@@ -0,0 +1,2 @@
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ var o=e=>{let n=e.name.split("/").at(-1)??"",s=n.replace(/^\S/,i=>i.toUpperCase())+"_v"+e.version.replaceAll(".","_"),t=`${n}_v${e.version}`,r=e.elementConfig;return{name:s,outDir:t,elementConfig:r}},a=e=>{let{name:n,outDir:s}=o(e);return{build:{target:["chrome94","edge94","firefox92"],reportCompressedSize:!1,emptyOutDir:!0,outDir:s,cssCodeSplit:!0,lib:{entry:"./index.js",formats:["umd","es"],name:n,fileName:t=>t==="es"?"es/index.js":"index.js"},rollupOptions:{external:["vue"],output:{globals:{vue:"Vue"},chunkFileNames:"es/js/[name]-[hash].js",assetFileNames:t=>t.name?.endsWith(".css")?"es/style.css":"es/assets/[name]-[hash][extname]"}}}}};export{o as a,a as b};
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- import{defineConfig as e}from"vite";import{getConfig as i}from"./base.js";import"@vitejs/plugin-vue";import"vite-plugin-compression";import"vite-plugin-banner";import"./index.js";import"./vite-plugin-element-namespace.js";import"@vue/compiler-sfc";import"node:path";var o=e(i({name:process.env.VITE_CURRENT_CHART_NAME,version:process.env.VITE_CURRENT_CHART_VERSION,author:process.env.VITE_CURRENT_CHART_AUTHOR,elementConfig:JSON.parse(process.env.VITE_CURRENT_CHART_ELEMENT_CONFIG)}));export{o as default};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a as o}from"./chunk-LFITEGP6.js";import"./chunk-MQN57SH7.js";import"./chunk-OVGQS7LQ.js";import{defineConfig as t}from"vite";var r=e=>{let n=process.env[e];if(n===void 0)throw new Error(`\u73AF\u5883\u53D8\u91CF ${e} \u672A\u8BBE\u7F6E\uFF1A\u8BF7\u901A\u8FC7 vcc build / vcc dev \u542F\u52A8\uFF08CLI \u4F1A\u81EA\u52A8\u6CE8\u5165\u56FE\u8868\u4FE1\u606F\uFF09\uFF0C\u6216\u624B\u52A8\u5BFC\u51FA\u8BE5\u53D8\u91CF\u540E\u91CD\u8BD5`);return n},E={name:r("VITE_CURRENT_CHART_NAME"),version:r("VITE_CURRENT_CHART_VERSION"),author:process.env.VITE_CURRENT_CHART_AUTHOR,elementConfig:JSON.parse(process.env.VITE_CURRENT_CHART_ELEMENT_CONFIG??"false")},C=t(o(E));export{C as default};
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- export{getConfig}from"./base.js";export{getBaseConfig,getPackageInfo}from"./index.js";import"@vitejs/plugin-vue";import"vite-plugin-compression";import"vite-plugin-banner";import"./vite-plugin-element-namespace.js";import"@vue/compiler-sfc";import"node:path";
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a as e}from"./chunk-LFITEGP6.js";import"./chunk-MQN57SH7.js";import{a as o,b as r}from"./chunk-OVGQS7LQ.js";export{r as getBaseConfig,e as getConfig,o as getPackageInfo};
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- const e=e=>{const s=e.name.split("/").at(-1);return{name:s.replace(/^\S/,(e=>e.toUpperCase()))+"_v"+e.version.replaceAll(".","_"),outDir:`${s}_v${e.version}`,elementConfig:e.elementConfig}},s=s=>{const{name:t,outDir:n}=e(s);return{build:{target:["chrome94","edge94","firefox92"],reportCompressedSize:!1,emptyOutDir:!0,outDir:n,cssCodeSplit:!0,lib:{entry:"./index.js",formats:["umd","es"],name:t,fileName:e=>"es"===e?"es/index.js":"index.js"},rollupOptions:{external:["vue"],output:{globals:{vue:"Vue"},chunkFileNames:"es/js/[name]-[hash].js",assetFileNames:e=>e.name?.endsWith(".css")?"es/style.css":"es/assets/[name]-[hash][extname]"}}}}};export{s as getBaseConfig,e as getPackageInfo};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a,b}from"./chunk-OVGQS7LQ.js";export{b as getBaseConfig,a as getPackageInfo};
@@ -1,2 +1,2 @@
1
- // pangu-chart-cli v1.0.0 by Jaxon
2
- import{parse as e}from"@vue/compiler-sfc";function t(t){const{entryFile:n,namespace:r}=t;return n&&r?{name:"element-namespace-plugin",transform(t,i){if(i!==n)return t;try{const{descriptor:n}=e(t,{filename:i});if(!n.template)return t;const{newTemplateContent:s,templateModified:o}=function(e,t){const n=/<(el-config-provider|ElConfigProvider)([^>]*?)>/i,r=n.test(e);let i=e,s=!1;if(r){const r=e.match(n),o=r[1],c=r[2];if(!/namespace\s*=\s*["'].*?["']/i.test(c)){const r=c.trim(),l=r?`${r} namespace="${t}"`:`namespace="${t}"`;i=e.replace(n,`<${o} ${l}>`),s=!0}}else i=`\n <el-config-provider namespace="${t}">\n ${e}\n </el-config-provider>\n `.trim(),s=!0;return{newTemplateContent:i,templateModified:s}}(n.template.content,r);let c=t;return o&&(c=function(e,t){let n=function(e,t){const n=/(<script[\s\S]*?>[\s\S]*?<\/script>)/gi,r=[];let i=e;i=i.replace(n,(e=>(r.push(e),`__SCRIPT_PLACEHOLDER_${r.length-1}__`)));const s=/(<template>)([\s\S]*)(<\/template>)/,o=i.replace(s,`$1\n${t}\n$3`);let c=o;return r.forEach(((e,t)=>{c=c.replace(`__SCRIPT_PLACEHOLDER_${t}__`,e)})),c}(e,t);const r=/import\s+.*?(ElConfigProvider).*?\s+from\s+['"]element-plus['"]/i.test(n);if(r)return n;const i=/<script([^>]*?)>/i,s=n.match(i),o="import { ElConfigProvider } from 'element-plus';\n";if(s){const e=s.index+s[0].length;n=n.substring(0,e)+"\n"+o+n.substring(e)}else n+=`\n\n<script setup>\n${o}<\/script>`;return n}(c,s)),c}catch(e){return console.error("处理命名空间和导入时出错:",e),t}}}:(console.warn("请提供入口文件路径和目标命名空间"),{name:"element-namespace-plugin"})}export{t as default};
1
+ /** pangu-chart-cli v1.0.1-beta.0 by Jaxon */
2
+ import{a}from"./chunk-MQN57SH7.js";export{a as default};
package/index.d.ts CHANGED
@@ -1,53 +1,96 @@
1
- import type {UserConfig} from "vite";
2
-
1
+ /** @file 公共类型声明(手写维护;types.test-d.ts 守护其与源码签名同步) */
2
+ import type { UserConfig } from 'vite';
3
3
 
4
+ /**
5
+ * Element Plus 命名空间配置的对象形态
6
+ */
4
7
  export interface ElementConfigObject {
5
- enable?: boolean;
6
- entryFile?: string;
7
- configSrc?: string;
8
- namespace?: string;
8
+ /** 是否启用 namespace(缺省按 true 处理) */
9
+ enable?: boolean;
10
+ /** Vue 入口文件路径 */
11
+ entryFile?: string;
12
+ /** Element Plus SCSS 配置文件路径 */
13
+ configSrc?: string;
14
+ /** 自定义命名空间名称 */
15
+ namespace?: string;
9
16
  }
10
17
 
11
- export interface BaseConfig{
12
- name: string;
13
- version: string;
14
- author?: string;
15
- elementConfig?: boolean | ElementConfigObject;
18
+ /**
19
+ * 图表包描述(编程接口公共输入)
20
+ */
21
+ export interface BaseConfig {
22
+ /** 组件包名 */
23
+ name: string;
24
+ /** 当前版本号 */
25
+ version: string;
26
+ /** 作者名(写入 banner,可选) */
27
+ author?: string;
28
+ /** Element Plus 命名空间配置 */
29
+ elementConfig?: boolean | ElementConfigObject;
16
30
  }
17
31
 
32
+ /**
33
+ * 基础构建配置结构(「getBaseConfig」返回的 build 段形状)
34
+ */
18
35
  export interface Result {
19
- build: {
20
- reportCompressedSize: false,
21
- emptyOutDir: true,
22
- outDir:string,
23
- cssCodeSplit: true,
24
- lib: {
25
- entry: string, // 设置入口文件
26
- formats: string[],
27
- name: string, // 起个名字,安装、引入用
28
- fileName: ()=>string
29
- },
30
- },
31
- rollupOptions: {
32
- // 确保外部化处理那些你不想打包进库的依赖
33
- external: string[],
34
- output: {
35
- // UMD 构建模式下为这些外部化的依赖提供一个全局变量
36
- globals: Record<string, string>
37
- }
38
- }
36
+ /** vite build 配置段 */
37
+ build: {
38
+ /** 浏览器兼容目标 */
39
+ target: string[];
40
+ /** 是否报告压缩体积 */
41
+ reportCompressedSize: boolean;
42
+ /** 构建前是否清空输出目录 */
43
+ emptyOutDir: boolean;
44
+ /** 输出目录名 */
45
+ outDir: string;
46
+ /** 是否启用 CSS 代码分割 */
47
+ cssCodeSplit: boolean;
48
+ /** 库模式配置 */
49
+ lib: {
50
+ /** 库入口文件 */
51
+ entry: string;
52
+ /** 输出格式列表 */
53
+ formats: string[];
54
+ /** UMD 全局变量名 */
55
+ name: string;
56
+ /** 按格式决定输出文件名 */
57
+ fileName: (format: string) => string;
58
+ };
59
+ /** rollup 选项 */
60
+ rollupOptions: {
61
+ /** 外部化依赖列表 */
62
+ external: string[];
63
+ /** 输出命名与全局变量映射 */
64
+ output: {
65
+ /** UMD 全局变量映射 */
66
+ globals: Record<string, string>;
67
+ /** 代码分块文件名模板 */
68
+ chunkFileNames: string;
69
+ /** 资源文件命名函数 */
70
+ assetFileNames: (assetInfo: { name?: string }) => string;
71
+ };
72
+ };
73
+ };
39
74
  }
40
75
 
41
- declare function getBaseConfig(config: BaseConfig): Result;
42
- declare function getPackageInfo(config: {
43
- name: string;
44
- version: string;
45
- elementConfig?: boolean | ElementConfigObject;
46
- }) : {
47
- name: string;
48
- outDir: string;
49
- elementConfig?: boolean | ElementConfigObject;
76
+ /**
77
+ * 产物命名信息(「getPackageInfo」的返回)
78
+ */
79
+ export interface PackageInfo {
80
+ /** UMD 全局变量名 */
81
+ name: string;
82
+ /** 输出目录名 */
83
+ outDir: string;
84
+ /** 透传的原 elementConfig */
85
+ elementConfig?: boolean | ElementConfigObject;
50
86
  }
51
87
 
88
+ declare function getBaseConfig(config: BaseConfig): Result;
89
+ declare function getPackageInfo(config: {
90
+ name: string;
91
+ version: string;
92
+ elementConfig?: boolean | ElementConfigObject;
93
+ }): PackageInfo;
94
+ declare function getConfig(config: BaseConfig): UserConfig;
52
95
 
53
- declare function getConfig(config: BaseConfig):UserConfig
96
+ export { getBaseConfig, getPackageInfo, getConfig };
package/package.json CHANGED
@@ -1,55 +1,79 @@
1
1
  {
2
2
  "name": "pangu-chart-cli",
3
- "version": "1.0.0",
3
+ "version": "1.0.1-beta.0",
4
4
  "description": "pangu-chart-cli",
5
+ "keywords": [
6
+ "pangu-chart-cli",
7
+ "vcc",
8
+ "vis-chart-cli"
9
+ ],
10
+ "license": "MIT",
11
+ "author": "Jaxon",
5
12
  "bin": {
6
13
  "vcc": "bin/index.js",
7
14
  "vis-chart-cli": "bin/index.js"
8
15
  },
9
- "scripts": {
10
- "build": "bun ./build/index.js && rollup --config",
11
- "release": "standard-version",
12
- "release:patch": "standard-version --release-as patch",
13
- "release:minor": "standard-version --release-as minor",
14
- "release:major": "standard-version --release-as major",
15
- "release:beta": "standard-version --prerelease beta"
16
- },
16
+ "files": [
17
+ "dist",
18
+ "bin",
19
+ "index.d.ts"
20
+ ],
21
+ "type": "module",
17
22
  "main": "./dist/viteConfig/entry.js",
18
- "module": "./dist/viteConfig/entry.js",
19
23
  "types": "./index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./index.d.ts",
27
+ "import": "./dist/viteConfig/entry.js"
28
+ }
29
+ },
30
+ "publishConfig": {
31
+ "registry": "https://registry.npmjs.org/"
32
+ },
33
+ "scripts": {
34
+ "build": "node build.mjs",
35
+ "test": "vitest",
36
+ "test:coverage": "vitest --coverage",
37
+ "typecheck": "tsc --noEmit",
38
+ "prepublishOnly": "pnpm lint && pnpm format:check && pnpm typecheck && pnpm build && pnpm vitest run",
39
+ "lint": "oxlint",
40
+ "lint:fix": "oxlint --fix",
41
+ "format": "oxfmt --write",
42
+ "format:check": "oxfmt --check"
43
+ },
20
44
  "dependencies": {
21
- "await-to-js": "^3.0.0",
22
45
  "chalk": "^4.1.2",
23
46
  "commander": "^10.0.1",
24
47
  "cross-spawn": "^7.0.6",
25
48
  "dayjs": "^1.11.11",
26
- "ora": "^5.4.1",
27
- "yann-fs": "^1.6.0"
49
+ "fs-extra": "^11.3.5"
28
50
  },
29
51
  "devDependencies": {
30
- "@rollup/plugin-commonjs": "^18.1.0",
31
- "@rollup/plugin-json": "^6.1.0",
32
- "prettier": "^3.6.2",
33
- "rollup": "^2.79.1",
34
- "rollup-plugin-babel": "^4.4.0",
35
- "rollup-plugin-banner": "^0.2.1",
36
- "rollup-plugin-node-resolve": "^5.2.0",
37
- "rollup-plugin-terser": "^7.0.2",
38
- "standard-version": "^9.5.0"
52
+ "@types/chalk": "^2.2.4",
53
+ "@types/cross-spawn": "^6.0.6",
54
+ "@types/fs-extra": "^11.0.4",
55
+ "@types/node": "^20.19.43",
56
+ "@vitejs/plugin-vue": "^6.0.8",
57
+ "@vitest/coverage-v8": "^4.1.9",
58
+ "@vue/compiler-sfc": "^3.4.0",
59
+ "esbuild": "^0.25.0",
60
+ "glob": "^10.3.0",
61
+ "oxfmt": "0.66.0",
62
+ "oxlint": "^1.81.0",
63
+ "typescript": "7.0.2",
64
+ "vite": "^7.0.0",
65
+ "vite-plugin-banner": "^0.7.1",
66
+ "vite-plugin-compression": "^0.5.1",
67
+ "vitest": "^4.1.9"
39
68
  },
40
- "publishConfig": {
41
- "registry": "https://registry.npmjs.org/"
69
+ "peerDependencies": {
70
+ "@vitejs/plugin-vue": ">=4",
71
+ "@vue/compiler-sfc": ">=3.2",
72
+ "vite": ">=4",
73
+ "vite-plugin-banner": ">=0.2",
74
+ "vite-plugin-compression": ">=0.5"
42
75
  },
43
- "keywords": [
44
- "pangu-chart-cli",
45
- "vcc",
46
- "vis-chart-cli"
47
- ],
48
- "author": "Jaxon",
49
- "license": "MIT",
50
- "files": [
51
- "dist",
52
- "bin",
53
- "index.d.ts"
54
- ]
76
+ "engines": {
77
+ "node": ">=20"
78
+ }
55
79
  }