开发模式启动与热更新
本教程共 48 篇 · 第 12 篇 · 更新于 2026-08-09 · 约 7 分钟阅读
本节目标:用
tauri dev把应用跑起来,看懂开发窗口和热更新是怎么工作的,并分清开发模式与生产构建的不同。
前几章我们把项目建好、结构弄清、配置写完,现在终于要按下「运行」键了。Tauri 把开发期运行叫「开发模式(dev mode)」,对应的命令是 tauri dev。这一章讲它怎么跑、热更新怎么发生,以及它和最终打包的 tauri build 差在哪。
启动开发模式
进入项目目录,执行:
npm run tauri dev
如果你的 package.json 里没有 tauri 这个脚本(用 npm 时通常需要),也可以直接调用本地 CLI:
npx tauri dev
命令一跑,Tauri CLI 会做几件事:先执行 tauri.conf.json 里 build.beforeDevCommand 指定的命令(比如 npm run dev)拉起前端开发服务器;同时编译 Rust 后端;编译完成后打开一个桌面窗口,窗口里的 WebView 直接加载 build.devUrl 指向的本地前端地址。
Note这条命令在官方 CLI 参考里描述为「在开发模式下打开 WebView」。它依赖
build.devUrl指向的地址,也依赖beforeDevCommand先把前端服务器起好。两者配错,窗口就会白屏或报错。
第一次为什么慢,之后为什么快
首次运行,CLI 要下载并编译一大批 Rust 依赖(包括 Tauri 自身),往往要等几分钟。这是正常开销,不是你环境坏了。编译结果会缓存进 src-tauri/target/,之后再跑,只要 Rust 代码没大改,就只做增量编译,几秒就能起来。
前端那边则相反——Vite 这类工具本就秒起,所以你看到的整体节奏是:第一次「慢在 Rust」,之后「前端秒更、Rust 小改快更」。
Warning若
tauri dev报找不到命令,先确认npm install已经成功执行过。Tauri CLI 是作为开发依赖装进项目的,没装依赖就调不到它。
热更新(HMR)是怎么发生的
改前端代码保存后,窗口里的页面几乎立刻刷新——这个机制叫热模块替换(Hot Module Replacement,HMR)。但它并不是 Tauri 自己实现的,而是你前端工具的本事。
原理是这样:开发模式下窗口加载的是 devUrl 那个本地服务器(例如 http://localhost:5173),不是打包后的静态文件。Vite/Webpack 等工具监听文件变化,一保存就推新内容给浏览器。Tauri 的 WebView 本质就是个浏览器内核,自然就跟着热更新了。所以「前端热更新」和「普通网页开发」是同一套机制,Tauri 只是把你写的网页搬进了桌面窗口。
Rust 这侧则是另一套:改了 lib.rs 之类的后端代码,CLI 的文件监听器会触发重新编译,编译完窗口自动重启。所以它不是 HMR,而是「改后端→重新编译→重载窗口」。
TipCLI 提供了
--no-watch选项,加上它就关掉文件监听,改代码不会自动重编译。调试某些只在冷启动时出现的问题时,这个开关能派上用场。
常用 dev 命令选项
tauri dev 还接受一些实用选项(来自官方 CLI 参考):
-r, --runner <BIN> 用指定的二进制来运行应用
-v, --verbose... 输出详细日志,排查问题时有用
-t, --target <TRIPLE> 针对某个目标三元组构建(交叉编译用)
-f, --features <...> 激活指定的 cargo 功能
-e, --exit-on-panic 遇到 panic 直接退出
-c, --config <JSON> 合并一段 JSON 配置到 tauri.conf.json
--release 用 release 模式(而非 debug)运行
--no-watch 关闭文件监听器
--no-dev-server 关闭内置的静态文件开发服务器
--port <PORT> 指定内置开发服务器端口,默认 1430
日常开发用默认即可,遇到奇怪问题再加 -v 看详细日志,想临时覆盖配置用 -c 传一段 JSON,都很方便。
dev 与生产构建 build 的区别
最容易混的就是 tauri dev 和 tauri build。一句话区分:dev 是为了「开发时方便」,build 是为了「给用户用」。
tauri dev 加载的是本地开发服务器地址,带调试信息,Rust 走 debug 编译,启动慢但改代码即时生效,产物不打包成安装包。tauri build 则先跑 beforeBuildCommand 把前端打包成静态文件,再用 release 模式编译 Rust,最后按 bundle 分区产出安装包(.exe/.msi/.dmg 等),放在 src-tauri/target/release/bundle/ 下。
打个比方:dev 像是厨师在厨房边做边尝,随时调整火候;build 是把菜定稿、装盘、封盒,交给客人带走。两者用的是同一份源码,但目的和产物完全不同。
Tip想只编译出可运行的绿色可执行文件、不要安装包,可以
tauri build --no-bundle,产物直接在src-tauri/target/release/下,双击就能跑。
开发窗口里怎么调试前端
开发模式下,窗口里的页面就是网页,所以调试手段和浏览器一致。在窗口上右键选择「检查元素」(或按 F12,具体取决于平台),就能打开开发者工具(DevTools),看控制台日志、网络请求、元素结构。前端代码报错、接口不通,都先在这里查。
Note开发者工具默认只在开发模式出现。打包成生产应用后,这个调试入口默认是关掉的,避免把内部信息暴露给最终用户。
小结
到这里,开发模式这条主线就通了:建项目、看结构、写配置、跑起来。我们掌握了 tauri dev 的启动流程、首次编译慢后续增量快的原因、前端 HMR 与 Rust 重编译的区别、常用 CLI 选项,以及 dev 与 build 的本质差异,并学会了在开发窗口中用 DevTools 调试前端。你已经具备从零折腾一个 Tauri 2 应用的完整基本功,接下来可以往里加命令、窗口、插件等更多能力。