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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions