create-koishi-ce 1.4.0 → 1.5.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/lib/bin.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bun
2
- import { t as start } from "./src-B1-ko5wA.mjs";
2
+ import { t as start } from "./src-t_F40fpK.mjs";
3
3
  //#region src/bin.ts
4
4
  /**
5
5
  * create-koishi-ce 的 CLI 可执行入口:shebang 由 rolldown 原样保留到
package/lib/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { a as renderManifest, i as readNpmrcRegistry, n as detectAgent, r as getLocalRegistry, t as start } from "./src-B1-ko5wA.mjs";
1
+ import { a as renderManifest, i as readNpmrcRegistry, n as detectAgent, r as getLocalRegistry, t as start } from "./src-t_F40fpK.mjs";
2
2
  export { detectAgent, getLocalRegistry, readNpmrcRegistry, renderManifest, start };
@@ -11,7 +11,7 @@ import { fileURLToPath } from "node:url";
11
11
  var package_default = {
12
12
  name: "create-koishi-ce",
13
13
  description: "Setup a Koishi application",
14
- version: "1.4.0",
14
+ version: "1.5.0",
15
15
  type: "module",
16
16
  main: "./lib/index.mjs",
17
17
  module: "./lib/index.mjs",
@@ -198,11 +198,13 @@ function writePackageJson(rootDir, project, prod) {
198
198
  * 不会拉入 npm 官方全家桶形成第二份框架副本;市场安装亦不改写该声明
199
199
  * (installer 的 isGuardedRequest 护栏将 npm:@koishi-ce alias 与
200
200
  * workspace: 同等保护);
201
- * - koishi.yml 对齐官方实例的预写策略:控制台与基础插件全量预装(依赖
202
- * 数据库的保持 ~ 禁用);database-sqlite 已随模板预装,去掉 ~ 即用;
203
- * 本仓不再分发的 adapter 官方插件与未再分发的 database(mongo / mysql
204
- * / postgres)只以 ~ 禁用条目预写、不预装——loader 跳过禁用条目,装
205
- * 好后在控制台启用;
201
+ * - koishi.yml 采用配置页导出形态:插件键带 uid 实例后缀,分组带中文
202
+ * $label $collapsed 元数据;database-sqlite 默认启用,开箱即得数
203
+ * 据库;依赖数据库但非必需的插件(admin / bind / auth / broadcast /
204
+ * callme)保持 ~ 禁用;本仓不再分发的 adapter 官方插件只以 ~ 禁用条
205
+ * 目预写、不预装——loader 跳过禁用条目,装好后在控制台启用(mongo /
206
+ * mysql / postgres 等未再分发的 database 不再预写占位条目,市场装后
207
+ * 自动出现);
206
208
  * - 依赖版本统一 ^1.0.0 区间(安装时取最新 1.x),shim 版本例外(冻结线)。
207
209
  */
208
210
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "create-koishi-ce",
3
3
  "description": "Setup a Koishi application",
4
- "version": "1.4.0",
4
+ "version": "1.5.0",
5
5
  "type": "module",
6
6
  "main": "./lib/index.mjs",
7
7
  "module": "./lib/index.mjs",
@@ -92,51 +92,56 @@ test("内置模板静态文件齐备,koishi.yml 预配 market 镜像源", () =
92
92
  );
93
93
  });
94
94
 
95
- test("koishi.yml 预写策略对齐官方实例:CE 插件全量预装(依赖数据库者禁用),官方 adapter / 未分发 database 只写不装", () => {
95
+ test("koishi.yml 预写策略:sqlite 默认启用开箱数据库,非必需件与官方 adapter 保持 ~ 禁用", () => {
96
96
  const yml = templateFiles["koishi.yml"] ?? "";
97
- // 依赖数据库 / 暂无需启用的 CE 插件:预装但 ~ 禁用
97
+ // 配置页导出形态:插件键带 uid 实例后缀,分组带 $collapsed / $label 元数据
98
+ expect(yml).toMatch(/database-sqlite:[a-z0-9]{6}:/);
99
+ expect(yml).toContain("$collapsed: true");
100
+ expect(yml).toContain("$label: ");
101
+ // 依赖数据库但非必需 / 暂无需启用的 CE 插件:预装但 ~ 禁用
98
102
  for (const name of [
99
103
  "~admin",
100
104
  "~bind",
101
105
  "~broadcast",
102
106
  "~callme",
103
- "~analytics",
104
107
  "~auth",
105
- "~dataview",
106
- "~rate-limit",
107
108
  "~inspect",
108
109
  "~server-temp",
109
110
  "~mock",
110
111
  ]) {
111
112
  expect(yml).toContain(name);
112
113
  }
113
- // 无需数据库即可工作的 CE 插件:直接启用
114
+ // 随模板默认启用的 CE 插件(含 sqlite 数据库):条目存在且无 ~ 前缀
114
115
  for (const name of [
115
- "assets-local",
116
+ "database-sqlite",
117
+ "dataview",
118
+ "analytics",
119
+ "rate-limit",
116
120
  "echo",
117
- "theme-vanilla",
121
+ "assets-local",
118
122
  "status",
119
123
  "sandbox",
124
+ "theme-vanilla",
120
125
  ]) {
121
126
  expect(yml).toContain(name);
127
+ expect(yml).not.toContain(`~${name}`);
122
128
  }
123
- // database-sqlite 已随模板预装:依赖在册 + yml 保持 ~ 禁用(启用即可用)
129
+ // database-sqlite 依赖在册(随模板预装,启用即得数据库)
124
130
  expect(
125
131
  baseManifest().dependencies?.[
126
132
  "@koishi-ce/plugin-database-sqlite"
127
133
  ],
128
134
  ).toBe("^1.0.0");
129
- expect(yml).toContain("~database-sqlite");
130
- // 官方 adapter / 未再分发的 database 只以 ~ 禁用条目预写(未预装,市场装后启用)
135
+ // 官方 adapter 只以 ~ 禁用条目预写(未预装,市场装后启用);
136
+ // 未再分发的 database(mongo / mysql / postgres)不再预写占位条目
131
137
  for (const name of [
132
138
  "~adapter-discord",
133
139
  "~adapter-telegram",
134
140
  "~adapter-qq",
135
- "~database-mongo",
136
- "~database-postgres",
137
141
  ]) {
138
142
  expect(yml).toContain(name);
139
143
  }
144
+ expect(yml).not.toContain("database-mongo");
140
145
  // 模板依赖里不得出现官方 adapter / database 包名(只预写不预装)
141
146
  expect(JSON.stringify(baseManifest())).not.toContain(
142
147
  "adapter-",
@@ -18,9 +18,9 @@ bun run dev # 启动(开发模式,启用 HMR 热更新)
18
18
 
19
19
  ## 预装与预写
20
20
 
21
- - **已预装**:基础与控制台插件(@koishi-ce 全家桶)。其中依赖数据库的(admin / bind / broadcast / callme / analytics / auth / dataview / rate-limit 等)与暂无需启用的(inspect / server-temp / mock)在 `koishi.yml` 中以 `~` 前缀保持禁用——启用任一数据库插件后,去掉对应 `~` 即可。
22
- - **数据库开箱即用**:`@koishi-ce/plugin-database-sqlite` 已预装(`~database-sqlite` 保持禁用),无需市场安装,在配置页启用即可,数据落在 `data/koishi.db`。
23
- - **只预写、未预装**:adapter(discord / telegram / qq …)与数据库(mongo / mysql / postgres …)官方插件以 `~` 禁用条目预写在 `koishi.yml` 的 `group:adapter` / `group:storage`——loader 会跳过禁用条目,不安装也能正常启动;需要时在控制台「插件市场」搜索安装,回到配置页点击启用即可。
21
+ - **已预装**:基础与控制台插件(@koishi-ce 全家桶)。`koishi.yml` 为配置页导出形态:插件键带 uid 实例后缀,分组带中文 `$label` 标签。其中依赖数据库但非必需的(admin / bind / broadcast / callme / auth)与暂无需启用的(inspect / server-temp / mock)以 `~` 前缀保持禁用——数据库已默认启用,去掉对应 `~` 即可。
22
+ - **数据库开箱即用**:`@koishi-ce/plugin-database-sqlite` 已预装并默认启用,数据落在 `data/koishi.db`。
23
+ - **只预写、未预装**:adapter(discord / telegram / qq …)官方插件以 `~` 禁用条目预写在 `koishi.yml` 的 `group:adapter`——loader 会跳过禁用条目,不安装也能正常启动;需要时在控制台「插件市场」搜索安装,回到配置页点击启用即可(mongo / mysql / postgres 等其他数据库插件未预写占位,市场安装后自动出现条目)。
24
24
 
25
25
  ## 安装插件
26
26
 
@@ -1,69 +1,75 @@
1
1
  plugins:
2
2
  group:server:
3
- server:
3
+ $collapsed: true
4
+ $label: 服务器
5
+ server:nhf2rf:
4
6
  port: 5140
5
7
  maxPort: 5149
6
- ~server-temp: {}
7
- group:basic:
8
- ~admin: {}
9
- ~bind: {}
10
- ~broadcast: {}
11
- ~callme: {}
12
- commands: {}
13
- echo: {}
14
- help: {}
15
- http: {}
16
- ~inspect: {}
17
- locales: {}
18
- proxy-agent: {}
19
- ~rate-limit: {}
8
+ ~server-temp:z9nmes: {}
9
+ ~adapter-satori:euyuu6: {}
10
+ group:storage:
11
+ $collapsed: true
12
+ $label: 持久化
13
+ assets-local:0bp951: {}
14
+ database-sqlite:60m3ri:
15
+ path: data/koishi.db
20
16
  group:console:
21
- actions: {}
22
- ~analytics: {}
23
- ~auth: {}
24
- config: {}
25
- console:
17
+ $collapsed: true
18
+ $label: 控制台
19
+ console:p179rv:
26
20
  open: true
27
- ~dataview: {}
28
- explorer: {}
29
- insight: {}
30
- logger: {}
31
- market:
21
+ ~auth:decpjz: {}
22
+ oobe:kw667y: {}
23
+ config:hrvlki: {}
24
+ market:n1dg4c:
32
25
  search:
33
26
  endpoint: https://registry.koishi.chat/index.json
34
- notifier: {}
35
- oobe: {}
36
- sandbox: {}
37
- status: {}
38
- theme-vanilla: {}
39
- group:storage:
40
- ~database-mongo:
41
- database: koishi
42
- ~database-mysql:
43
- database: koishi
44
- ~database-postgres:
45
- database: koishi
46
- ~database-sqlite:
47
- path: data/koishi.db
48
- assets-local: {}
27
+ explorer:5e7k13: {}
28
+ actions:ttgal7: {}
29
+ sandbox:bbkwu5: {}
30
+ status:hc51wq: {}
31
+ logger:akzyyp: {}
32
+ dataview:eklvzg: {}
33
+ analytics:smgmme: {}
34
+ insight:ozp3by: {}
35
+ notifier:30g7rg: {}
36
+ theme-vanilla:029kuh: {}
37
+ group:basic:
38
+ $collapsed: true
39
+ $label: 基础库
40
+ commands:lgrbci: {}
41
+ help:nrbz2h: {}
42
+ echo:t6r9sk: {}
43
+ ~admin:e0sr2y: {}
44
+ ~bind:zxx2sn: {}
45
+ ~broadcast:q8x3jd: {}
46
+ ~callme:m4v7wt: {}
47
+ ~inspect:2t107r: {}
48
+ locales:bi9lco: {}
49
+ http:rwe3ck: {}
50
+ proxy-agent:p6jj15: {}
51
+ rate-limit:cghjaw: {}
49
52
  group:adapter:
50
- ~adapter-dingtalk: {}
51
- ~adapter-discord: {}
52
- ~adapter-kook: {}
53
- ~adapter-lark: {}
54
- ~adapter-line: {}
55
- ~adapter-mail: {}
56
- ~adapter-matrix: {}
57
- ~adapter-qq: {}
58
- ~adapter-satori: {}
59
- ~adapter-slack: {}
60
- ~adapter-telegram: {}
61
- ~adapter-wechat-official: {}
62
- ~adapter-wecom: {}
63
- ~adapter-whatsapp: {}
64
- ~adapter-zulip: {}
53
+ $collapsed: true
54
+ $label: 适配器
55
+ ~adapter-qq:lr3f6b: {}
56
+ ~adapter-telegram:memc76: {}
57
+ ~adapter-discord:4n11rk: {}
58
+ ~adapter-kook:2s0qw0: {}
59
+ ~adapter-wecom:euh20s: {}
60
+ ~adapter-wechat-official:ufqejg: {}
61
+ ~adapter-dingtalk:76isk2: {}
62
+ ~adapter-lark:vtfsz0: {}
63
+ ~adapter-line:hfsd6d: {}
64
+ ~adapter-slack:ctdrr0: {}
65
+ ~adapter-whatsapp:xn68t0: {}
66
+ ~adapter-mail:cjnxrb: {}
67
+ ~adapter-matrix:phadis: {}
68
+ ~adapter-zulip:fg64tb: {}
65
69
  group:develop:
66
- $if: env.NODE_ENV === 'development'
67
- hmr:
68
- root: .
69
- ~mock: {}
70
+ $if: "env.NODE_ENV === 'development'"
71
+ $collapsed: true
72
+ $label: 开发
73
+ hmr:i3xkbw:
74
+ root: "."
75
+ ~mock:w2y5nh: {}
package/src/template.ts CHANGED
@@ -25,11 +25,13 @@
25
25
  * 不会拉入 npm 官方全家桶形成第二份框架副本;市场安装亦不改写该声明
26
26
  * (installer 的 isGuardedRequest 护栏将 npm:@koishi-ce alias 与
27
27
  * workspace: 同等保护);
28
- * - koishi.yml 对齐官方实例的预写策略:控制台与基础插件全量预装(依赖
29
- * 数据库的保持 ~ 禁用);database-sqlite 已随模板预装,去掉 ~ 即用;
30
- * 本仓不再分发的 adapter 官方插件与未再分发的 database(mongo / mysql
31
- * / postgres)只以 ~ 禁用条目预写、不预装——loader 跳过禁用条目,装
32
- * 好后在控制台启用;
28
+ * - koishi.yml 采用配置页导出形态:插件键带 uid 实例后缀,分组带中文
29
+ * $label $collapsed 元数据;database-sqlite 默认启用,开箱即得数
30
+ * 据库;依赖数据库但非必需的插件(admin / bind / auth / broadcast /
31
+ * callme)保持 ~ 禁用;本仓不再分发的 adapter 官方插件只以 ~ 禁用条
32
+ * 目预写、不预装——loader 跳过禁用条目,装好后在控制台启用(mongo /
33
+ * mysql / postgres 等未再分发的 database 不再预写占位条目,市场装后
34
+ * 自动出现);
33
35
  * - 依赖版本统一 ^1.0.0 区间(安装时取最新 1.x),shim 版本例外(冻结线)。
34
36
  */
35
37
  import {