@yunzai-ng/cli 0.1.1 → 0.3.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/README.md +21 -3
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +25 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +4 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/legacy.d.ts +7 -0
- package/dist/legacy.d.ts.map +1 -0
- package/dist/legacy.js +30 -0
- package/dist/legacy.js.map +1 -0
- package/package.json +4 -4
- package/src/commands/doctor.ts +25 -1
- package/src/commands/init.ts +2 -0
- package/src/commands/start.ts +3 -0
- package/src/legacy.ts +30 -0
package/README.md
CHANGED
|
@@ -28,7 +28,25 @@ yzng start --log-level debug
|
|
|
28
28
|
|
|
29
29
|
## 主目录怎么定
|
|
30
30
|
|
|
31
|
-
优先级:`--home` 参数 > `YZNG_HOME` 环境变量 > 便携模式标记 >
|
|
31
|
+
优先级:`--home` 参数 > `YZNG_HOME` 环境变量 > 便携模式标记 > **当前目录**。
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
默认就是当前目录:在哪儿 `yzng init`,数据就在哪儿,拷走整个文件夹即完成迁移。
|
|
34
|
+
**首次启动会打印它的实际位置** —— 这一条要紧,因为「我改的配置为什么不生效」
|
|
35
|
+
几乎总是改错了目录。
|
|
36
|
+
|
|
37
|
+
以 Windows 服务、开机自启或 pm2 启动时,工作目录并非项目目录,**必须**显式给出
|
|
38
|
+
`YZNG_HOME` 或启动器的工作目录,否则数据会落在启动器所在之处。
|
|
39
|
+
|
|
40
|
+
### 从 0.1.x 升级
|
|
41
|
+
|
|
42
|
+
0.1.x 的默认位置是系统目录(Windows 的 `%LOCALAPPDATA%\YunzaiNG`、Linux 的
|
|
43
|
+
`~/.yunzai-ng` 等)。升级后不会静默沿用那里 —— 那会让「默认在当前目录」在任何装过旧版的
|
|
44
|
+
机器上都不成立。取而代之,`init`、`start` 与 `doctor` 都会在检测到旧实例时打印一行提示:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
! 旧版本的主目录里还有一个实例 C:\Users\你\AppData\Local\YunzaiNG
|
|
48
|
+
本次用的是 D:\yunzai
|
|
49
|
+
要继续用旧的,设 YZNG_HOME 指向它;要搬过来,把其中内容拷到上面这个目录
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**刻意不自动迁移**:两个目录都有内容时无从判断该以谁为准,猜错的代价是覆盖掉正在用的那份。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAwJA,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,YAAY;IACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,iCAAiC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,eAAe;IACf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAwJA,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,YAAY;IACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,iCAAiC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,eAAe;IACf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAwBD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCzE"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -13,7 +13,7 @@ import net from "node:net";
|
|
|
13
13
|
import process from "node:process";
|
|
14
14
|
import { createRequire } from "node:module";
|
|
15
15
|
import { access } from "node:fs/promises";
|
|
16
|
-
import { detectPlatform, resolvePaths, sampleUsage } from "@yunzai-ng/core";
|
|
16
|
+
import { detectPlatform, legacyInstance, resolvePaths, sampleUsage } from "@yunzai-ng/core";
|
|
17
17
|
import { bold, cyan, dim, green, print, printRows, red, yellow } from "../terminal.js";
|
|
18
18
|
/** Node 最低版本,与根 package.json 的 engines 保持一致 */
|
|
19
19
|
const MIN_NODE_MAJOR = 20;
|
|
@@ -136,6 +136,28 @@ function printFinding(finding) {
|
|
|
136
136
|
if (finding.next !== undefined)
|
|
137
137
|
print(` ${dim(`→ ${finding.next}`)}`);
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* 检查旧默认位置上是否还留着一个实例
|
|
141
|
+
*
|
|
142
|
+
* 无遗留时**不产出结论**而非产出一条 ok:0.2.0 之后新装的机器永远不会命中这一条,
|
|
143
|
+
* 为它常驻一行「无旧实例」只是噪声。
|
|
144
|
+
*
|
|
145
|
+
* 命中时定为 warn:它不阻碍启动,但「升级之后配置全没了」是这次默认值变更最可能
|
|
146
|
+
* 被当成故障的一幕,自检必须替使用者把它答出来。
|
|
147
|
+
* @param home 本次解析出的主目录
|
|
148
|
+
* @returns 结论;无遗留时 undefined
|
|
149
|
+
*/
|
|
150
|
+
function checkLegacy(home) {
|
|
151
|
+
const legacy = legacyInstance(home);
|
|
152
|
+
if (legacy === undefined)
|
|
153
|
+
return undefined;
|
|
154
|
+
return {
|
|
155
|
+
level: "warn",
|
|
156
|
+
title: "旧实例",
|
|
157
|
+
detail: `${legacy} 里还留着一个实例`,
|
|
158
|
+
next: "0.2.0 起主目录默认为当前目录。要继续用旧的,设 YZNG_HOME 指向它;要搬过来,把其中内容拷到本次的主目录"
|
|
159
|
+
};
|
|
160
|
+
}
|
|
139
161
|
/**
|
|
140
162
|
* 执行一次环境自检
|
|
141
163
|
* @param opts 参数
|
|
@@ -153,9 +175,11 @@ export async function runDoctor(opts = {}) {
|
|
|
153
175
|
["CPU", `${platform.cpus} 核`],
|
|
154
176
|
["常驻内存", `${(usage.rss / 1024 / 1024).toFixed(1)} MB`]
|
|
155
177
|
]);
|
|
178
|
+
const legacy = checkLegacy(paths.home);
|
|
156
179
|
const findings = [
|
|
157
180
|
checkNode(),
|
|
158
181
|
await checkDir("主目录", paths.home),
|
|
182
|
+
...(legacy === undefined ? [] : [legacy]),
|
|
159
183
|
await checkDir("配置目录", paths.config),
|
|
160
184
|
await checkDir("数据目录", paths.data),
|
|
161
185
|
checkNative("classic-level", "内嵌 KV,用于计数与冷却", "缺失时内核降级为 JSON 文件存储,功能不受影响但写入速度较低"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,YAAY;AACZ,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqCrE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { ConfigStore, createLoggerHub, defineCoreConfig, ensurePaths, resolvePaths } from "@yunzai-ng/core";
|
|
15
15
|
import { linkFramework } from "../link.js";
|
|
16
|
+
import { noteLegacyInstance } from "../legacy.js";
|
|
16
17
|
import { bold, cyan, dim, green, print, printErr, printRows, red, yellow } from "../terminal.js";
|
|
17
18
|
/**
|
|
18
19
|
* 建立主目录与缺省配置
|
|
@@ -40,6 +41,8 @@ export async function runInit(opts = {}) {
|
|
|
40
41
|
["临时", cyan(paths.temp)]
|
|
41
42
|
]);
|
|
42
43
|
print();
|
|
44
|
+
if (noteLegacyInstance(paths.home))
|
|
45
|
+
print();
|
|
43
46
|
if (link.failed.length > 0) {
|
|
44
47
|
print(` ${yellow("!")} 框架包未能链接至主目录,插件将无法 import @yunzai-ng/core`);
|
|
45
48
|
for (const [name, reason] of link.failed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAQhD,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,YAAY;IACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,aAAa;IACb,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAClD,cAAc;IACd,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IACxC,eAAe;IACf,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACvC;AAwCD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDvE"}
|
package/dist/commands/start.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { createApp, resolvePaths } from "@yunzai-ng/core";
|
|
13
13
|
import { linkFramework } from "../link.js";
|
|
14
|
+
import { noteLegacyInstance } from "../legacy.js";
|
|
14
15
|
import { bold, cyan, dim, green, print, printErr, printRows, red, yellow } from "../terminal.js";
|
|
15
16
|
/** 兜底定时器的间隔:取值足够大以避免产生可测量的开销,同时不超出 32 位范围 */
|
|
16
17
|
const KEEPALIVE_MS = 0x7fffffff;
|
|
@@ -59,6 +60,9 @@ export async function runStart(opts = {}) {
|
|
|
59
60
|
// 建立链接须早于 createApp:插件在 app.start() 中被 import,此时 Node 的解析
|
|
60
61
|
// 已经开始,届时再补建链接已无效果
|
|
61
62
|
const home = resolvePaths({ home: opts.home }).home;
|
|
63
|
+
// 在 createApp 之前提示:插件加载可能耗时数秒,而「我的数据呢」这个疑问越早解答越好
|
|
64
|
+
if (noteLegacyInstance(home))
|
|
65
|
+
print();
|
|
62
66
|
const link = await linkFramework(home);
|
|
63
67
|
let app;
|
|
64
68
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEhG,6CAA6C;AAC7C,MAAM,YAAY,GAAG,UAAU,CAAA;AAc/B;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,GAAQ;IAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;IAC7B,MAAM,IAAI,GAAuB;QAC/B,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;QACnB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAChI,CAAA;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA;QACpF,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;QAClE,sCAAsC;QACtC,kDAAkD;QAClD,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAA;IAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAA;IACtD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAA;IAEvF,KAAK,EAAE,CAAA;IACP,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACpD,KAAK,EAAE,CAAA;IACP,SAAS,CAAC,IAAI,CAAC,CAAA;IACf,KAAK,EAAE,CAAA;IACP,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;IACpC,KAAK,EAAE,CAAA;AACT,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB,EAAE;IACpD,0DAA0D;IAC1D,mBAAmB;IACnB,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IACnD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;IAEtC,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,SAAS,CAAC;YACpB,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAC1E,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iDAAiD;QACjD,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACzE,QAAQ,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,6CAA6C;IAC7C,8BAA8B;IAC9B,GAAG,CAAC,aAAa,EAAE,CAAA;IAEnB,sDAAsD;IACtD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACpF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,IAAI,yBAAyB,MAAM,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC5D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IAEvC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC5E,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAChB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,WAAW,CAAC,GAAG,CAAC,CAAA;IAChB,8CAA8C;IAC9C,8BAA8B;IAC9B,OAAO,IAAI,OAAO,CAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEhG,6CAA6C;AAC7C,MAAM,YAAY,GAAG,UAAU,CAAA;AAc/B;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,GAAQ;IAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;IAC7B,MAAM,IAAI,GAAuB;QAC/B,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;QACnB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAChI,CAAA;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA;QACpF,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;QAClE,sCAAsC;QACtC,kDAAkD;QAClD,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAA;IAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAA;IACtD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAA;IAEvF,KAAK,EAAE,CAAA;IACP,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACpD,KAAK,EAAE,CAAA;IACP,SAAS,CAAC,IAAI,CAAC,CAAA;IACf,KAAK,EAAE,CAAA;IACP,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;IACpC,KAAK,EAAE,CAAA;AACT,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB,EAAE;IACpD,0DAA0D;IAC1D,mBAAmB;IACnB,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IACnD,iDAAiD;IACjD,IAAI,kBAAkB,CAAC,IAAI,CAAC;QAAE,KAAK,EAAE,CAAA;IACrC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;IAEtC,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,SAAS,CAAC;YACpB,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAC1E,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iDAAiD;QACjD,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACzE,QAAQ,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,6CAA6C;IAC7C,8BAA8B;IAC9B,GAAG,CAAC,aAAa,EAAE,CAAA;IAEnB,sDAAsD;IACtD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACpF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,IAAI,yBAAyB,MAAM,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC5D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IAEvC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC5E,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAChB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,WAAW,CAAC,GAAG,CAAC,CAAA;IAChB,8CAA8C;IAC9C,8BAA8B;IAC9B,OAAO,IAAI,OAAO,CAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AAC7C,CAAC"}
|
package/dist/legacy.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../src/legacy.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASxD"}
|
package/dist/legacy.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模块职责:提示「旧默认位置上还留着一个实例」
|
|
3
|
+
* 依赖方向:依赖内核的 `legacyInstance` 与本包的终端输出
|
|
4
|
+
* 生命周期:每条命令执行时调用一次
|
|
5
|
+
* 注意事项:0.2.0 起主目录默认为当前目录,此前是系统目录(Windows 的
|
|
6
|
+
* `%LOCALAPPDATA%\YunzaiNG` 等)。升级后使用者在新位置看到的是一个空实例,
|
|
7
|
+
* 而配置、账号、历史记录仍在旧处 —— 若不提示,这一幕与「数据被清空」
|
|
8
|
+
* 无从分辨,而后者是会让人立刻停用一个框架的体验。
|
|
9
|
+
*
|
|
10
|
+
* **只提示,不自动迁移。** 两个目录都有内容时无从判断该以谁为准,
|
|
11
|
+
* 猜错的代价是覆盖掉正在用的那份。搬家是使用者看得见的一步。
|
|
12
|
+
*/
|
|
13
|
+
import { legacyInstance } from "@yunzai-ng/core";
|
|
14
|
+
import { cyan, dim, print, yellow } from "./terminal.js";
|
|
15
|
+
/**
|
|
16
|
+
* 若旧默认位置上还有实例,打印一段提示
|
|
17
|
+
* @param home 本次实际使用的主目录
|
|
18
|
+
* @returns 是否打印了提示
|
|
19
|
+
*/
|
|
20
|
+
export function noteLegacyInstance(home) {
|
|
21
|
+
const legacy = legacyInstance(home);
|
|
22
|
+
if (legacy === undefined)
|
|
23
|
+
return false;
|
|
24
|
+
print();
|
|
25
|
+
print(` ${yellow("!")} 旧版本的主目录里还有一个实例 ${cyan(legacy)}`);
|
|
26
|
+
print(` ${dim("本次用的是")} ${cyan(home)}`);
|
|
27
|
+
print(` ${dim(`要继续用旧的,设 YZNG_HOME 指向它;要搬过来,把其中内容拷到上面这个目录`)}`);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../src/legacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IAEtC,KAAK,EAAE,CAAA;IACP,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxD,KAAK,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5C,KAAK,CAAC,SAAS,GAAG,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAA;IAClE,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yunzai-ng/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Yunzai NG 命令行:init / start / dev / doctor / plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"src"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@yunzai-ng/
|
|
35
|
-
"@yunzai-ng/types": "0.
|
|
36
|
-
"@yunzai-ng/
|
|
34
|
+
"@yunzai-ng/core": "0.3.0",
|
|
35
|
+
"@yunzai-ng/types": "0.2.0",
|
|
36
|
+
"@yunzai-ng/jsx": "0.2.0"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsc -b"
|
package/src/commands/doctor.ts
CHANGED
|
@@ -13,7 +13,7 @@ import net from "node:net"
|
|
|
13
13
|
import process from "node:process"
|
|
14
14
|
import { createRequire } from "node:module"
|
|
15
15
|
import { access } from "node:fs/promises"
|
|
16
|
-
import { detectPlatform, resolvePaths, sampleUsage } from "@yunzai-ng/core"
|
|
16
|
+
import { detectPlatform, legacyInstance, resolvePaths, sampleUsage } from "@yunzai-ng/core"
|
|
17
17
|
import { bold, cyan, dim, green, print, printRows, red, yellow } from "../terminal.js"
|
|
18
18
|
|
|
19
19
|
/** Node 最低版本,与根 package.json 的 engines 保持一致 */
|
|
@@ -160,6 +160,28 @@ export interface DoctorOptions {
|
|
|
160
160
|
readonly host?: string | undefined
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
/**
|
|
164
|
+
* 检查旧默认位置上是否还留着一个实例
|
|
165
|
+
*
|
|
166
|
+
* 无遗留时**不产出结论**而非产出一条 ok:0.2.0 之后新装的机器永远不会命中这一条,
|
|
167
|
+
* 为它常驻一行「无旧实例」只是噪声。
|
|
168
|
+
*
|
|
169
|
+
* 命中时定为 warn:它不阻碍启动,但「升级之后配置全没了」是这次默认值变更最可能
|
|
170
|
+
* 被当成故障的一幕,自检必须替使用者把它答出来。
|
|
171
|
+
* @param home 本次解析出的主目录
|
|
172
|
+
* @returns 结论;无遗留时 undefined
|
|
173
|
+
*/
|
|
174
|
+
function checkLegacy(home: string): Finding | undefined {
|
|
175
|
+
const legacy = legacyInstance(home)
|
|
176
|
+
if (legacy === undefined) return undefined
|
|
177
|
+
return {
|
|
178
|
+
level: "warn",
|
|
179
|
+
title: "旧实例",
|
|
180
|
+
detail: `${legacy} 里还留着一个实例`,
|
|
181
|
+
next: "0.2.0 起主目录默认为当前目录。要继续用旧的,设 YZNG_HOME 指向它;要搬过来,把其中内容拷到本次的主目录"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
163
185
|
/**
|
|
164
186
|
* 执行一次环境自检
|
|
165
187
|
* @param opts 参数
|
|
@@ -179,9 +201,11 @@ export async function runDoctor(opts: DoctorOptions = {}): Promise<number> {
|
|
|
179
201
|
["常驻内存", `${(usage.rss / 1024 / 1024).toFixed(1)} MB`]
|
|
180
202
|
])
|
|
181
203
|
|
|
204
|
+
const legacy = checkLegacy(paths.home)
|
|
182
205
|
const findings: Finding[] = [
|
|
183
206
|
checkNode(),
|
|
184
207
|
await checkDir("主目录", paths.home),
|
|
208
|
+
...(legacy === undefined ? [] : [legacy]),
|
|
185
209
|
await checkDir("配置目录", paths.config),
|
|
186
210
|
await checkDir("数据目录", paths.data),
|
|
187
211
|
checkNative("classic-level", "内嵌 KV,用于计数与冷却", "缺失时内核降级为 JSON 文件存储,功能不受影响但写入速度较低"),
|
package/src/commands/init.ts
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { ConfigStore, createLoggerHub, defineCoreConfig, ensurePaths, resolvePaths } from "@yunzai-ng/core"
|
|
15
15
|
import { linkFramework } from "../link.js"
|
|
16
|
+
import { noteLegacyInstance } from "../legacy.js"
|
|
16
17
|
import { bold, cyan, dim, green, print, printErr, printRows, red, yellow } from "../terminal.js"
|
|
17
18
|
|
|
18
19
|
/** 初始化参数 */
|
|
@@ -48,6 +49,7 @@ export async function runInit(opts: InitOptions = {}): Promise<number> {
|
|
|
48
49
|
["临时", cyan(paths.temp)]
|
|
49
50
|
])
|
|
50
51
|
print()
|
|
52
|
+
if (noteLegacyInstance(paths.home)) print()
|
|
51
53
|
if (link.failed.length > 0) {
|
|
52
54
|
print(` ${yellow("!")} 框架包未能链接至主目录,插件将无法 import @yunzai-ng/core`)
|
|
53
55
|
for (const [name, reason] of link.failed) print(` ${dim(`${name}:${reason}`)}`)
|
package/src/commands/start.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { createApp, resolvePaths, type App } from "@yunzai-ng/core"
|
|
13
13
|
import type { LogLevel } from "@yunzai-ng/types"
|
|
14
14
|
import { linkFramework } from "../link.js"
|
|
15
|
+
import { noteLegacyInstance } from "../legacy.js"
|
|
15
16
|
import { bold, cyan, dim, green, print, printErr, printRows, red, yellow } from "../terminal.js"
|
|
16
17
|
|
|
17
18
|
/** 兜底定时器的间隔:取值足够大以避免产生可测量的开销,同时不超出 32 位范围 */
|
|
@@ -76,6 +77,8 @@ export async function runStart(opts: StartOptions = {}): Promise<number> {
|
|
|
76
77
|
// 建立链接须早于 createApp:插件在 app.start() 中被 import,此时 Node 的解析
|
|
77
78
|
// 已经开始,届时再补建链接已无效果
|
|
78
79
|
const home = resolvePaths({ home: opts.home }).home
|
|
80
|
+
// 在 createApp 之前提示:插件加载可能耗时数秒,而「我的数据呢」这个疑问越早解答越好
|
|
81
|
+
if (noteLegacyInstance(home)) print()
|
|
79
82
|
const link = await linkFramework(home)
|
|
80
83
|
|
|
81
84
|
let app: App
|
package/src/legacy.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模块职责:提示「旧默认位置上还留着一个实例」
|
|
3
|
+
* 依赖方向:依赖内核的 `legacyInstance` 与本包的终端输出
|
|
4
|
+
* 生命周期:每条命令执行时调用一次
|
|
5
|
+
* 注意事项:0.2.0 起主目录默认为当前目录,此前是系统目录(Windows 的
|
|
6
|
+
* `%LOCALAPPDATA%\YunzaiNG` 等)。升级后使用者在新位置看到的是一个空实例,
|
|
7
|
+
* 而配置、账号、历史记录仍在旧处 —— 若不提示,这一幕与「数据被清空」
|
|
8
|
+
* 无从分辨,而后者是会让人立刻停用一个框架的体验。
|
|
9
|
+
*
|
|
10
|
+
* **只提示,不自动迁移。** 两个目录都有内容时无从判断该以谁为准,
|
|
11
|
+
* 猜错的代价是覆盖掉正在用的那份。搬家是使用者看得见的一步。
|
|
12
|
+
*/
|
|
13
|
+
import { legacyInstance } from "@yunzai-ng/core"
|
|
14
|
+
import { cyan, dim, print, yellow } from "./terminal.js"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* 若旧默认位置上还有实例,打印一段提示
|
|
18
|
+
* @param home 本次实际使用的主目录
|
|
19
|
+
* @returns 是否打印了提示
|
|
20
|
+
*/
|
|
21
|
+
export function noteLegacyInstance(home: string): boolean {
|
|
22
|
+
const legacy = legacyInstance(home)
|
|
23
|
+
if (legacy === undefined) return false
|
|
24
|
+
|
|
25
|
+
print()
|
|
26
|
+
print(` ${yellow("!")} 旧版本的主目录里还有一个实例 ${cyan(legacy)}`)
|
|
27
|
+
print(` ${dim("本次用的是")} ${cyan(home)}`)
|
|
28
|
+
print(` ${dim(`要继续用旧的,设 YZNG_HOME 指向它;要搬过来,把其中内容拷到上面这个目录`)}`)
|
|
29
|
+
return true
|
|
30
|
+
}
|