Firenook 是一个独立的开源项目,旨在作为官方 Firebase Local Emulator Suite 的直接替代方案。它采用 Rust 语言开发,旨在为使用 Firebase 服务的开发者提供更高效的本地开发环境。它支持包括 Firestore、Authentication、Cloud Storage、Cloud Functions、Pub/Sub、Cloud Tasks 和 Eventarc 在内的八种模拟器,同时保持与标准 `firebase.json` 配置和现有 Firebase SDK 的兼容性。由于 Firenook 使用与官方套件相同的端口和环境变量,开发者只需更改启动脚本中的一个单词即可切换到 Firenook。

这张图片展示了控制台的概览界面,开发者可以在此处监控各种模拟服务的状态。

此视觉效果展示了 Firestore 模拟器界面,这是 Firenook 支持的八项服务之一。

这张图片显示了 Authentication 模拟器界面,它是 Firenook 为本地开发提供的服务套件的一部分。
Firenook 主要的技术优势在于其性能和资源效率。根据项目的基准测试,Firenook 实现了比官方模拟器快 40 倍的中位数写入速度(5.1 毫秒对比 208.2 毫秒),且在峰值时使用的内存比官方模拟器少 10 倍(2.11 GiB 对比 22.57 GiB)。这些提升归功于其原生实现和不同的数据处理策略:官方模拟器将所有数据保存在 Java 堆中,而 Firenook 将数据保存在磁盘上并缓存读取的内容。这种架构还实现了显著更快的重启速度;Firenook 可以在约 0.59 秒内使用保存的数据重新启动,而官方模拟器则需要经过可能耗时超过 30 秒的导出和导入周期。
尽管有这些性能提升,Firenook 仍有特定的功能边界。它不模拟 Realtime Database、Hosting、App Hosting 或 Data Connect;虽然配置了这些服务的 `firebase.json` 文件仍可启动,但 Firenook 将发出警告。此外,虽然它支持官方的导入和导出格式,但它是一个独立项目,与 Google 无关。由于性能数据直接由 Firenook 项目提供,这些基准测试代表的是开发者的内部测试,而非独立的第三方验证。对于生产部署,开发者仍需使用官方的 `firebase-tools` CLI,因为 Firenook 仅用于本地模拟,不包含部署命令。