首页 / Tauri 2 入门教程 / 开发模式启动与热更新

Tauri 2 入门教程

开发模式启动与热更新

本教程共 48 篇 · 第 12 篇 · 更新于 2026-08-09 · 约 7 分钟阅读

tauri dev开发模式热更新HMRtauri build

本节目标:用 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.jsonbuild.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,而是「改后端→重新编译→重载窗口」。

Tip

CLI 提供了 --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 devtauri 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 应用的完整基本功,接下来可以往里加命令、窗口、插件等更多能力。