文档开发

Rust · 0.1.0

开发

建立 Rust 与 React 的开发闭环,找到改动入口,运行对应检查,再构建包含真实前端的发行产物。

准备工具与源码

需要先取得应用仓库的授权源码。当前官网是独立静态项目,不能用来运行应用后端。下列版本来自本分支的工具链及包配置,应使用锁定依赖,不要直接套用上游 Memos 的开发工具链。

工具要求用途
Rust1.94.0,包含 rustfmt 和 Clippy后端与 Rust 协议绑定
Node.jspackage.json 要求 24 或以上React/Vite 前端
pnpm11.0.1按锁文件安装前端依赖
C/C++ 与 CMake构建环境可用SQLite、音频库等原生依赖
Buf修改协议时需要生成 OpenAPI 与 TypeScript

用两个终端建立开发闭环

使用专门的开发终端,不挂载生产 /etc/secrets。显式指定 SQLite 和空 DSN,避免继承的数据库变量指向真实数据库;清除 Socket 与演示变量,使示例使用指定监听方式。在仓库根目录启动后端,并使用自己的数据目录。第二个终端安装前端依赖并运行 Vite。打开 Vite 实际打印的地址,不要假定前端端口固定。开发代理指向 8081 端口的后端。请使用测试账号和合成笔记。

# Terminal 1: application repository root
unset MEMOS_UNIX_SOCK MEMOS_DEMO
cargo run --locked --bin memos -- \
  --addr 127.0.0.1 --port 8081 --driver sqlite --dsn '' --data ./dev-data

# Terminal 2: application repository root
cd web
pnpm install --frozen-lockfile
pnpm dev

按职责寻找修改入口

修改行为前先阅读相关测试。业务规则应与 HTTP 传输处理分开,生成协议文件应由规范定义重新生成。

领域源码位置
命令行和进程启动crates/amemos/src/main.rs
HTTP/REST/Connect 适配crates/amemos/src/server/
API 行为crates/amemos/src/api/
持久化和数据库升级crates/amemos/src/store/ 与 store/migration/
协议定义proto/api/v1/ 与 proto/store/
React 界面web/src/
行为与数据库测试crates/amemos/tests/

按下一步目标继续

新工作环境先完成开发环境。需要包含真实网页界面的可执行文件时,阅读构建应用;调试占位页不是发行界面。修改代码时,通过测试选择前端、后端、协议及一次性数据库检查。送审前使用参与开发中的检查表,说明改动、验证证据和未测试部分。

确认开发闭环真正可用

读取本地后端的 /healthz,打开 Vite 界面,创建一条测试笔记,刷新后再编辑。随后为修改区域运行针对性测试。如果后端已启动却显示开发占位页,应使用 Vite 地址或生成发行资源;如果 Vite 无法访问 API,优先检查后端端口和启动日志。

curl --fail http://127.0.0.1:8081/healthz
cargo fmt --all -- --check
# For a full embedded frontend + release binary:
sh scripts/build.sh
./build/memos --version

本节指南