如何自动重建OpenMMO的WASM:shared crate变更监听一行命令完整指南 📅 发布时间:2026/9/17 22:44:05 👁 浏览次数: 如何自动重建OpenMMO的WASMshared crate变更监听一行命令完整指南【免费下载链接】OpenMMO项目地址: https://gitcode.com/GitHub_Trending/open/OpenMMOOpenMMO 是一款 AI Agent 与人类玩家平权的开源 3D MMORPG其 Rust shared crate 被服务端与 Web 客户端同时使用浏览器端依赖 WASM 运行。本文带你用一行 cargo watch 命令实现 OpenMMO WASM 的自动重建——改动 shared crate 后无需再手动执行npm run build:wasm。 为什么 shared 变更要重建 WASM先看看项目在浏览器中运行起来的样子OpenMMO 采用 Cargo Workspace 组织代码shared/crate 名onlinerpg-shared是整个项目的逻辑核心服务端server/与AI 客户端agent-client/把shared编译成原生库直接链接Web 客户端client/把同一份代码编译成WASM跑在浏览器里。在 shared/Cargo.toml 中可以看到crate-type [cdylib, rlib]其中的cdylib就是给 Web 端用的导出形式。shared/src/wasm_api.rs 为 JS 侧封装了三个子系统WebSocket 协议的消息序列化每栋房屋的通行性缓存与 A* 寻路浏览器内驱动的怪物 AI 大脑WASM 产物不入库所以全新克隆后必须手动构建一次见 CONTRIBUTING.md。开发中一旦改动shared/浏览器里跑的仍是旧 WASM——协议版本对不上当前为 v78见 shared/src/lib.rs时服务器会直接拒绝旧客户端并要求更新。 build:wasm 命令里做了什么npm run build:wasm实际执行的是 client/scripts/build-wasm.sh按顺序完成四件事步骤动作作用1generate:csv把data-src/源码数据转成 JSON2generate:footprints/generate:monster-clips测量家具占地与怪物攻击动画时长3rm -rf src/lib/wasm清理旧输出4wasm-pack build --target web把 shared crate 打包为 WASM脚本开头几行很关键它用flock获取锁文件node_modules/.cache/build-wasm.lock第二个并发的构建会先等待——所以 watcher 和手动构建可以同时跑不会互相踩踏。最终产物输出到client/src/lib/wasm/由 Vite 开发服务器通过vite-plugin-wasm插件加载见 client/vite.config.ts。⚡ 一行命令自动监听 shared 变更准备工作就绪后在仓库根目录只需一行命令cargo watch -w shared -s npm run build:wasm --prefix client这条命令的三个要点-w shared只监听shared/目录保存文件即触发-s cmd检测到变更后执行指定命令而不是默认的 cargo 命令由于build-wasm.sh内部已包含数据生成步骤只监听shared/就够了。如果想让服务端也随代码热重启再开一个终端运行来自 README.md 第 4 步cargo watch -w server -w shared -w>git clone https://gitcode.com/GitHub_Trending/open/OpenMMO 常见问题速查全新克隆的项目先手动执行一次npm run build:wasm --prefix client再启动 watcher改动没生效确认 watcher 终端有触发命令输出若提示Waiting for the current WASM build to finish...说明有另一个构建正持有锁稍等即可游戏提示重新加载旧 WASM 的协议版本或地牢布局指纹与服务端不一致重建完成后刷新页面即可。至此shared/的任何改动都会在保存后自动流入浏览器。一行cargo watch命令WASM 自动重建从此免手动。【免费下载链接】OpenMMO项目地址: https://gitcode.com/GitHub_Trending/open/OpenMMO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考