环境搭建
本指南用于快速搭建 Yumeri 开发环境,并说明 3.0 之后的实际启动方式。重点不是“概念介绍”,而是帮助你从零到一把项目跑起来,并理解框架在启动时真正做了什么。
1. 环境要求
- Node.js:建议 LTS,至少 18+
- 包管理器:建议使用 Yarn,也支持 npm
- TypeScript:如果做插件开发,建议同时安装 TypeScript 与 Node 类型声明
2. 安装 Yumeri
方式 A:新项目安装
bash
mkdir my-yumeri-app
cd my-yumeri-app
yarn init -y
yarn add yumeri方式 B:安装开发依赖
bash
yarn add -D typescript @types/node方式 C:直接使用 Core
ts
import { Core } from 'yumeri'
const core = new Core()
await core.runCore()在真实的应用启动链路中,Yumeri 不是单独“new Core 然后手动跑”,而是通过
PluginLoader读取配置、装载插件并最终执行core.runCore()。
3. 推荐工程结构
一个典型工程大致如下:
text
yumeri-app/
├── plugins/ # 自定义插件目录
├── dist/ # 编译后的应用入口
├── yumeri.json # 主配置文件
├── package.json # 项目依赖与脚本
├── tsconfig.json # TypeScript 配置
├── src/ # 源码目录(可选)
└── README.md # 项目说明4. 配置文件
Yumeri 的启动器优先读取 yumeri.json,同时兼容旧的 config.yml。如果项目中存在 config.yml 且没有 yumeri.json,框架会自动迁移:
bash
config.yml -> yumeri.json并将旧文件重命名为:
bash
config.yml.migrated最小配置
json
{
"plugins": {
"console": true,
"logger": true
}
}对象形式插件配置
json
{
"plugins": {
"demo": {
"module": "yumeri-plugin-demo",
"config": {
"enabled": true
}
}
}
}这里的插件对象形式是 Yumeri 允许的实际配置模型之一,它和传统的 { "pluginId": true } 形式并行存在。
5. CLI 启动方式
通常以命令行直接启动:
bash
yumeri常见参数:
bash
yumeri --config ./config/my-yumeri.json
yumeri --auto-install参数说明
--config/-c:指定配置文件路径--auto-install:自动安装缺失插件并在必要时重启 worker
6. 启动时的真实流程
Yumeri 的启动并不是简单“读取 JSON 后直接跑服务器”,而是有明确步骤:
- 解析 CLI 参数
- 确定配置文件路径(
yumeri.json/config.yml) PluginLoader.loadConfig()载入配置PluginLoader.loadPlugins()处理插件依赖和安装- 如开启
--auto-install,缺失插件会先安装 - 若需要重启,退出并要求重新执行 worker
- 读取本地应用入口(通常是
dist/index.js) - 将应用作为插件挂载到
loader中 - 最终执行
loader.getCore().runCore(),启动真实 HTTP / WS 服务
这套流程是 Yumeri 平台化设计的关键:应用本身也会被当作一种插件来装载,而不是独立于插件系统之外。
7. 自动安装与重启
如果配置中声明了某个插件,但模块包未安装,Yumeri 会在 loadPlugins() 中尝试安装缺失模块:
ts
const restartRequired = await loader.loadPlugins()
if (restartRequired) {
console.log('Missing plugin packages were installed. Restarting the worker to load them.')
process.exitCode = 10
return
}这说明:
- 自动安装不是“静默跳过”
- 它会明确要求重启,确保新安装的依赖真正被加载
- 这是一种更稳定的部署方式,尤其适合 CI 和团队协作
8. 最佳实践
- 用
yumeri.json作为主配置文件,避免多套配置同时存在。 - 在生产环境里显式指定
--config,减少路径依赖。 - 完整声明
depend,不要依赖“启动时偶然通过”。 - 在多成员协作中开启
--auto-install,降低插件遗漏造成的启动失败概率。 - 把应用入口放在稳定的
dist/index.js或明确的构建目录中,避免启动时定位不到入口。
