Skip to content

refactor: 2.0 #515

@sj817

Description

@sj817

描述功能

将整个项目重构为多个子包

  • @karinjs/adapter
  • @karinjs/config
  • @karinjs/core
  • @karinjs/db
  • @karinjs/envs
  • @karinjs/events
  • @karinjs/hooks
  • @karinjs/glob
  • @karinjs/logger
  • @karinjs/onebot
  • @karinjs/paths
  • @karinjs/plugin
  • @karinjs/server
  • @karinjs/utils
  • @karinjs/render

TODO

  • 通过启用 node 内部接口,实现真正的hmr(热重载)
  • 通过解析调用栈上下文,将构建插件相关的函数实现为无需导出
  • 引入新增自定义组件,允许开发者自定义 webui 的自定义逻辑
  • 引入新的打包构建工具,提升编译速度 rolldown rolldown-vite
  • pnpm10 彻底带入生态
  • log4js 重写为 ts + esm 作为内部模块以减少 cjs 引起的相关问题
  • 去掉 jsonwebtoken 模块,使用内部实现
  • 将插件包类型统一为 npm git apps(之前为app) 新增 root(之前为内置类型,现暴露)
  • class plugin 进行重构,添加更好的泛型支持
  • hmr 抽离为单独api,支持运行时加载、卸载 插件包单个apps目录单个app文件(此部分因在生产环境,无法调用node内部接口删除缓存)
  • 支持适配器注册自定义事件(类型无法实现)
  • 重构事件发射器函数,添加更好的泛型支持,emit 支持仅发射到内部或内部和外部同时发射
  • 对于 apps 类型的插件包,例如 karin-plugin-example,将默认生成一个默认的 package.json,以达到 参数归一化 的目的
  • 所有插件相关的快速构建函数,将不再需要进行 export
  • 将开发环境带入 node v22+
  • 将每个适配器拆分为单独的子包 @karinjs/plugin-adapter-console @karinjs/plugin-adapter-onebot
  • 为单个app文件提供更新功能
  • 新增 karin.config.mjsweb.config.js 合并过来,进行兼容性处理
  • 将前端的系统组件重构,进行兼容嵌套组件 (此计划不一定实现,对于复杂组件更推荐使用自定义页面进行操作)
  • 引入 react,支持 react 组件渲染,此包仅167kb
  • 将登陆组件进行封装,供外部进行调用登陆,更好的支持插件的自定义页面
  • Feat: 将群头像放到群信息接口里面 #514
  • Feat: 输入框接口更新 #512
  • Bug: bot.setMsgReaction 的 faceId 类型不应该只是 number #506
  • Bug: 主动消息接口不支持 Array<string 和消息段的组合> #516
  • Bug: debug 日志等级极个别情况下不生效 #517
  • Bug: 渲染模块在连接到后端几小时以后无法正常使用 #520
  • Feat: 添加一个类似icqq的刷新图片rkey接口 #519
  • 添加setGroupAvatar接口设置群聊头像

动机

从项目初期开始,经历了类似于 js -> tsgit -> npmwebui 的加入、插件配置文件组件化 等等,导致现在代码越来越复杂,并且相关逻辑管理混乱,模块之间复杂的引用导致项目的维护困难。

实现方法

No response

替代方案

No response

附加信息

No response

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions