Tauri快速搭建环境
想用Rust Tauri开发的小伙伴们有福了!这里快速讲解如何即快速、又无障碍的搭建一个Rust Tauri开发基础环境。跟着做!
一、先安装npm
你可能问为啥?可不可以不用npm。回答是:可以!但你需要自己手工安装很多东西,不是缺少东西,就是搞错东西!用npm的目的就是方便而已。
npm 不用单独装,装 Node.js 就自带,单独装npm更费事!下面是具体安装、验证、版本管理和优化步骤,简单好懂:
1 安装 Node.js(npm 自动附带)
(1)官方安装包(新手首选)
- 打开Node.js 官网下载页,选「LTS 版本」(稳定不踩坑),别选 Current 版。
- 分系统安装:
- Windows:下载.msi 文件,双击安装时勾选「Add to PATH」,其余默认下一步,装完重启 CMD/PowerShell。
- macOS:下载.pkg 文件双击安装,或用 brew 命令
brew install node@20(20 是 LTS 版本号),装完重启终端。 - Linux(Ubuntu/Debian):下载.tar.xz 包,解压到 /usr/local,再执行两条
sudo ln -s命令配置软链接(具体命令见下文)。
(2)Linux 可选:用 nvm 安装(方便换版本)
直接看下面「2 版本管理:nvm」,用 nvm 装 Node.js 更灵活,还能避免权限问题。
2 版本管理:nvm(多版本切换必备)
先说清楚,如果你不需要多版本,那就不安这个,可以跳过!
如果需要在 Node 16、20 等版本间切换,用 nvm 最方便,还能自动管理对应 npm 版本。
(1)安装 nvm
- Windows:下载nvm-windows 安装包(选 nvm-setup.exe),默认安装即可。
- macOS/Linux:终端输入命令
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash,装完重启终端。 - 验证:输入
nvm -v能看到版本号就成功。
(2)nvm 核心命令
bash
nvm list available # 查可安装的LTS版本
nvm install 20 # 装Node 20(LTS版)
nvm install --lts # 装最新LTS版
nvm list # 查已装版本
nvm use 20 # 切换到Node 20
nvm alias default 20# 设为默认版本
3 验证安装是否成功
打开命令行,输入两个命令,能输出版本号就没问题:
bash
node -v # 示例输出:v20.18.0
npm -v # 示例输出:10.8.2
如果提示「命令未找到」,就是环境变量没配好,回头检查安装时的「Add to PATH」或软链接配置。
4 优化配置:换 npm 镜像(解决下载慢)
默认镜像在国外,国内下载包容易慢或失败,换淘宝镜像就行:
- 临时用:
npm install 包名 --registry=https://registry.npmmirror.com - 永久配:
npm config set registry https://registry.npmmirror.com,验证用npm config get registry - 可选装 cnpm:
npm install -g cnpm --registry=https://registry.npmmirror.com,之后用cnpm install下载更快
5 常见问题解决
- Windows 提示「命令未找到」:重新装 Node.js 并勾选「Add to PATH」,或手动把 Node 安装目录(比如 C:\Program Files\nodejs\)添加到系统环境变量 Path 里。
- mac/Linux 权限报错(EACCES):别用
sudo npm install,用 nvm 装 Node 就能避免,或执行sudo chown -R $USER:$GROUP ~/.npm修复权限。 - 下载超时 / 失败:换淘宝镜像,或先清缓存
npm cache clean --force再重试安装。
二、安装环境
这是从零搭建 Tauri 纯 JS 桌面应用的完整流程(无 Vue/React 框架),步骤清晰、重点突出,新手跟着做就能快速上手。
安装正确的开发环境目录应该如下:
目录结构速览(核心文件 / 文件夹)
项目根目录/
├─ src/ # 前端核心(JS/HTML/CSS)
│ ├─ index.html # 桌面窗口页面入口
│ ├─ main.js # JS 交互逻辑
│ └─ style.css # 页面样式
├─ src-tauri/ # Tauri 后端核心(桌面能力层)
│ ├─ tauri.conf.json # 应用配置(窗口、图标、权限等)
│ ├─ src/main.rs # Rust 系统功能代码
│ └─ Cargo.toml # Rust 依赖管理
├─ package.json # 前端配置(依赖、启动/打包脚本)
└─ vite.config.js # 构建工具配置(默认无需修改)
1 核心命令解读
执行的初始化命令:
bash
npm create tauri-app@latest . -- --template vanilla

每个部分的作用通俗讲:
npm create tauri-app@latest:调用 Tauri 官方脚手架,用最新版本避免 bug;.:项目直接建在当前目录(D:\rust_projects\t3),不额外新建文件夹;--:分隔参数,避免 npm 和 Tauri 命令混淆;--template vanilla:选原生 JS 模板(记住:JS 版用vanilla,TS 版用vanilla-ts,没有vanilla-js)。
2 脚手架交互选项(4 步选对即可)
命令执行后会弹出 4 个提问,默认选择基本够用,逐一说明:
(1)项目名称(Package name)
- 默认:
tauri-app,后续可在package.json里修改; - 作用:打包、管理依赖时识别项目,不用纠结,默认就行。
(2)应用标识符(Identifier)
- 默认:
com.gyfin.tauri-app,格式是「域名。用户名。项目名」; - 作用:系统区分不同应用(避免安装冲突),建议不修改。
(3)前端语言 / 包管理器兼容(Choose which language...)
- 选择:
TypeScript / JavaScript - (pnpm, yarn, npm...); - 说明:这是选 “前端开发语言类型”,咱们用的是 JS,选这个没错(Rust 是后端语言,不用选)。
(4)包管理器(Choose your package manager)
- 选择:
npm(和初始化命令一致,新手最稳妥); - 作用:后续下载前端依赖(比如 Tauri 的 JS API),熟悉 yarn/pnpm 也能选。
3 创建后的下一步操作
脚手架提示的命令里,重点关注「桌面开发」相关,步骤如下:
(1)先装依赖(必须做)
在当前项目目录执行:
bash
npm install

- 作用:下载前端所需的 Tauri API、Vite 构建工具等;
- 国内慢的话,先换淘宝镜像:
npm config set registry https://registry.npmmirror.com。
(2)启动开发环境(核心操作)
依赖装完后,准备执行:
npm run tauri dev
- 效果:自动弹出桌面窗口,修改代码后实时刷新(热更新);
- 补充:
cargo tauri dev效果一样,选自己熟悉的命令就行。
所以,这里用了 cargo tauri dev 命令来替代 npm run tauri dev 。但在这之前,先要修改一个小bug,否则容易报错!
打开项目里的 src-tauri/Cargo.toml 文件,找到「依赖部分」([dependencies] 和 [build-dependencies]),修改 Tauri 及插件的版本号:
注意以下错误:
[dependencies]
tauri = "2" # 错误:只写了 2,Rust 无法解析
tauri-plugin-opener = "2" # 错误:同样是版本号简写
# 其他依赖...[build-dependencies]
tauri-build = "2" # 错误:同上
把上面的所有 ="2" 改成 ="^2.0.0" 或具体版本(如 ="2.0.0-beta.17",Tauri 2.x 目前是测试版,可写最新 beta 版):
[dependencies]
tauri = "^2.0.0" # ^ 表示兼容 2.x 所有版本,自动匹配最新兼容版
tauri-plugin-opener = "^2.0.0"
# 其他依赖(如 serde、tokio 等)保留不变,只改 tauri 相关的[build-dependencies]
tauri-build = "^2.0.0"
改完后记得保存 Cargo.toml,这一步能解决 “版本解析失败” 的核心报错。最好(最稳妥)的做法还要运行命令,并删除已有的Cargo.lock(如果现在已经有就删掉)。
进入src-tauri目录并执行一下命令:
cargo clean
del Cargo.lock
之后运行更新命令
# 更新依赖并生成新的锁文件(会自动拉取兼容的最新版本)
cargo update
解释一下:
cargo clean:清除之前的编译产物,避免旧代码干扰;rm Cargo.lock:删除旧的依赖锁文件,让cargo update重新计算依赖版本;cargo update:根据修正后的Cargo.toml,拉取最新的兼容依赖(解决toml等依赖过旧的问题)。
执行更新命令结果如下:

现在可以在根目录(src-tauri目录的上一级)下运行 cargo tauri dev 命令了。如下:
D:\rust_projects\t3>cargo tauri devRunning DevCommand (`cargo run --no-default-features --color always --`)Info Watching D:\rust_projects\t3\src-tauri for changes...Compiling proc-macro2 v1.0.103Compiling quote v1.0.42Compiling unicode-ident v1.0.22Compiling cfg-if v1.0.4Compiling serde_core v1.0.228Compiling zerocopy v0.8.27Compiling smallvec v1.15.1Compiling getrandom v0.2.16Compiling rand_core v0.6.4Compiling litemap v0.8.1Compiling syn v2.0.109Compiling writeable v0.6.2Compiling windows-link v0.2.1Compiling itoa v1.0.15Compiling stable_deref_trait v1.2.1Compiling serde v1.0.228Compiling ppv-lite86 v0.2.21Compiling icu_normalizer_data v2.1.1Compiling memchr v2.7.6Compiling rand_chacha v0.3.1Compiling rand v0.8.5Compiling siphasher v1.0.1Compiling icu_properties_data v2.1.1Compiling phf_shared v0.11.3Compiling fnv v1.0.7Compiling phf_generator v0.11.3Compiling siphasher v0.3.11Compiling ryu v1.0.20Compiling thiserror v2.0.17Compiling getrandom v0.1.16Compiling utf8_iter v1.0.4Compiling byteorder v1.5.0Compiling rand_core v0.5.1Compiling log v0.4.28Compiling synstructure v0.13.2Compiling winnow v0.7.13Compiling syn v1.0.109Compiling ident_case v1.0.1Compiling strsim v0.11.1Compiling parking_lot_core v0.9.12Compiling typeid v1.0.3Compiling toml_parser v1.0.4Compiling darling_core v0.21.3Compiling windows-sys v0.61.2Compiling serde_derive v1.0.228Compiling zerofrom-derive v0.1.6Compiling zerofrom v0.1.6Compiling yoke-derive v0.8.1Compiling zerovec-derive v0.11.2Compiling displaydoc v0.2.5Compiling yoke v0.8.1Compiling thiserror-impl v2.0.17Compiling zerotrie v0.2.3Compiling zerovec v0.11.5Compiling phf_macros v0.11.3Compiling erased-serde v0.4.9Compiling tinystr v0.8.2Compiling potential_utf v0.1.4Compiling icu_locale_core v2.1.1Compiling scopeguard v1.2.0Compiling toml_writer v1.0.4Compiling lock_api v0.4.14Compiling icu_collections v2.1.1Compiling darling_macro v0.21.3Compiling icu_provider v2.1.1Compiling rand_pcg v0.2.1Compiling rand_chacha v0.2.2Compiling phf_shared v0.8.0Compiling aho-corasick v1.1.4Compiling thiserror v1.0.69Compiling regex-syntax v0.8.8Compiling proc-macro-hack v0.5.20+deprecatedCompiling unic-char-range v0.9.0Compiling unic-common v0.9.0Compiling unic-ucd-version v0.9.0Compiling unic-char-property v0.9.0Compiling regex-automata v0.4.13Compiling rand v0.7.3Compiling parking_lot v0.12.5Compiling darling v0.21.3Compiling thiserror-impl v1.0.69Compiling phf_shared v0.10.0Compiling new_debug_unreachable v1.0.6Compiling bytes v1.10.1Compiling getrandom v0.3.4Compiling alloc-no-stdlib v2.0.4Compiling serde_json v1.0.145Compiling windows_x86_64_msvc v0.52.6Compiling alloc-stdlib v0.2.2Compiling phf_generator v0.10.0Compiling serde_with_macros v3.15.1Compiling regex v1.12.2Compiling phf_generator v0.8.0Compiling unic-ucd-ident v0.9.0Compiling icu_properties v2.1.1Compiling icu_normalizer v2.1.1Compiling winapi-util v0.1.11Compiling phf_codegen v0.11.3Compiling string_cache_codegen v0.5.4Compiling anyhow v1.0.100Compiling precomputed-hash v0.1.1Compiling mac v0.1.1Compiling dunce v1.0.5Compiling futf v0.1.5Compiling markup5ever v0.14.1Compiling same-file v1.0.6Compiling idna_adapter v1.2.1Compiling phf_macros v0.10.0Compiling phf_codegen v0.8.0Compiling brotli-decompressor v5.0.0Compiling http v1.3.1Compiling cssparser v0.29.6Compiling toml_datetime v0.7.3Compiling semver v1.0.27Compiling serde_spanned v1.0.3Compiling utf-8 v0.7.6Compiling percent-encoding v2.3.2Compiling version_check v0.9.5Compiling dtoa v1.0.10Compiling autocfg v1.5.0Compiling bitflags v1.3.2Compiling dtoa-short v0.3.5Compiling form_urlencoded v1.2.2Compiling tendril v0.4.3Compiling toml v0.9.8Compiling indexmap v1.9.3Compiling brotli v8.0.2Compiling phf v0.10.1Compiling windows-targets v0.52.6Compiling uuid v1.18.1Compiling selectors v0.24.0Compiling idna v1.1.0Compiling walkdir v2.5.0Compiling string_cache v0.8.9Compiling phf v0.11.3Compiling cssparser-macros v0.6.1Compiling ctor v0.2.9Compiling nodrop v0.1.14Compiling camino v1.2.1Compiling libc v0.2.177Compiling matches v0.1.10Compiling windows-link v0.1.3Compiling glob v0.3.3Compiling convert_case v0.4.0Compiling derive_more v0.99.20Compiling servo_arc v0.2.0Compiling url v2.5.7Compiling phf v0.8.0Compiling match_token v0.1.0Compiling serde_derive_internals v0.29.1Compiling fxhash v0.2.1Compiling hashbrown v0.16.0Compiling shlex v1.3.0Compiling schemars v0.8.22Compiling equivalent v1.0.2Compiling hashbrown v0.12.3Compiling find-msvc-tools v0.1.4Compiling schemars_derive v0.8.22Compiling cc v1.2.45Compiling indexmap v2.12.0Compiling html5ever v0.29.1Compiling cfb v0.7.3Compiling jsonptr v0.6.3Compiling cargo-platform v0.1.9Compiling dyn-clone v1.0.20Compiling serde-untagged v0.1.9Compiling cargo_metadata v0.19.2Compiling json-patch v3.0.1Compiling infer v0.19.0Compiling kuchikiki v0.8.8-speedreaderCompiling vswhom-sys v0.1.3Compiling urlpattern v0.3.0Compiling windows-result v0.3.4Compiling windows-strings v0.4.2Compiling serde_with v3.15.1Compiling windows-implement v0.60.2Compiling windows-interface v0.59.3Compiling windows-core v0.61.2Compiling windows-sys v0.59.0Compiling tauri-utils v2.8.0Compiling typenum v1.19.0Compiling vswhom v0.1.0Compiling windows-threading v0.1.0Compiling generic-array v0.14.9Compiling rustc_version v0.4.1Compiling option-ext v0.2.0Compiling dirs-sys v0.5.0Compiling windows-future v0.2.1Compiling winreg v0.55.0Compiling windows-collections v0.2.0Compiling embed-resource v3.0.6Compiling windows-numerics v0.2.0Compiling heck v0.5.0Compiling crc32fast v1.5.0Compiling simd-adler32 v0.3.7Compiling windows v0.61.3Compiling tauri-winres v0.3.3Compiling dirs v6.0.0Compiling cargo_toml v0.22.3Compiling webview2-com-sys v0.38.0Compiling crossbeam-utils v0.8.21Compiling powerfmt v0.2.0Compiling time-core v0.1.6Compiling num-conv v0.1.0Compiling raw-window-handle v0.6.2Compiling adler2 v2.0.1Compiling miniz_oxide v0.8.9Compiling time-macros v0.2.24Compiling deranged v0.5.5Compiling tauri-build v2.5.1Compiling cookie v0.18.1Compiling dpi v0.1.2Compiling windows_x86_64_msvc v0.53.1Compiling flate2 v1.1.5Compiling time v0.3.44Compiling crypto-common v0.1.6Compiling block-buffer v0.10.4Compiling fdeflate v0.3.7Compiling webview2-com-macros v0.8.0Compiling bitflags v2.10.0Compiling windows-version v0.1.7Compiling unicode-segmentation v1.12.0Compiling cfg_aliases v0.2.1Compiling once_cell v1.21.3Compiling softbuffer v0.4.6Compiling tauri v2.9.2Compiling png v0.17.16Compiling digest v0.10.7Compiling crossbeam-channel v0.5.15Compiling tauri-runtime v2.9.1Compiling cpufeatures v0.2.17Compiling wry v0.53.5Compiling sha2 v0.10.9Compiling windows-targets v0.53.5Compiling ico v0.4.0Compiling tauri-plugin v2.5.1Compiling lazy_static v1.5.0Compiling tauri-runtime-wry v2.9.1Compiling base64 v0.22.1Compiling tauri-plugin-opener v2.5.2Compiling tauri-codegen v2.5.0Compiling windows-sys v0.60.2Compiling keyboard-types v0.7.0Compiling serialize-to-javascript-impl v0.1.2Compiling pin-project-lite v0.2.16Compiling tokio v1.48.0Compiling muda v0.17.1Compiling serialize-to-javascript v0.1.2Compiling tauri-macros v2.5.0Compiling tao v0.34.5Compiling window-vibrancy v0.6.0Compiling serde_repr v0.1.20Compiling mime v0.3.17Compiling tauri-app v0.1.0 (D:\rust_projects\t3\src-tauri)Compiling open v5.3.2Compiling webview2-com v0.38.0Finished `dev` profile [unoptimized + debuginfo] target(s) in 7m 27sRunning `target\debug\tauri-app.exe`
执行结果会出现示例程序窗口:

如果你的程序出现错误,没有出现预期的结果,那多半是你没有纠正bug或先前的设置有误!
另外,不是每次cargo tauri dev都需要下载并编译这些过程库的。一次下载编译通过后,再次使用时就不会再下载并编译了。
4 项目核心目录详解(开发重点看这些)
| 目录 / 文件 | 用途(通俗说) |
|---|---|
src/ | 写前端的地方:HTML 是窗口页面,JS 写交互,CSS 调样式 |
src/index.html | 桌面窗口显示的内容,相当于应用 “门面” |
src/main.js | JS 逻辑核心:比如按钮点击、调用系统通知等 |
src-tauri/ | 控制桌面能力的 “后台”:不用写 Rust 也能先用,后续加功能再改 |
src-tauri/tauri.conf.json | 应用配置:改窗口大小、图标、是否允许访问本地文件等 |
package.json | 前端 “说明书”:记录项目名、依赖,以及 npm run tauri dev 这类启动命令 |
5 实战:简单开发示例(快速体验)
(1)启动应用
执行 cargo tauri dev,桌面会弹出默认窗口(如上图)。程序结果以热更新的形式出现了,所谓热更新,就是你修改程序时,这个程序窗口会自动更新(所见即所得)。
(2)修改页面 + 加交互
- 打开
src/index.html,替换内容(加标题和按钮):
<!doctype html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><link rel="stylesheet" href="styles.css" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Tauri演示应用</title><script src="/main.js" defer></script></head><body><main class="container"><h1>欢迎使用Tauri</h1><div class="row"><a href="https://tauri.app" target="_blank"><img src="/assets/tauri.svg" class="logo tauri" alt="Tauri logo" /></a><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript" target="_blank"><img src="/assets/javascript.svg" class="logo vanilla" alt="JavaScript logo" /></a></div><p>点击Tauri标志了解更多关于这个框架的信息</p><form class="row" id="greet-form"><input id="greet-input" placeholder="请输入您的名字..." /><button type="submit">问候</button></form><p id="greet-msg"></p></main></body>
</html>
- 打开
src/main.js,加点击事件(调用系统通知):
// Tauri 2.0 API调用示例
const { invoke } = window.__TAURI__.core;// 初始化函数
window.addEventListener("DOMContentLoaded", () => {// 获取DOM元素const greetInput = document.querySelector("#greet-input");const greetMsg = document.querySelector("#greet-msg");const greetForm = document.querySelector("#greet-form");// 添加表单提交事件greetForm.addEventListener("submit", async (e) => {e.preventDefault(); // 阻止表单默认提交行为try {// 调用Rust端的greet函数const result = await invoke("greet", { name: greetInput.value || "访客" });// 显示结果greetMsg.textContent = result;} catch (error) {// 错误处理console.error("调用Rust函数失败:", error);greetMsg.textContent = "发生错误,请重试";}});
});
- 保存后,窗口自动刷新,点击按钮就能看到系统通知。(这时cargo tauri dev并未关闭,你应该可以看到结果。但如果关闭了,可以通过cargo tauri dev打开既可)

6 常用命令汇总
| 命令 | 用途 |
|---|---|
npm install | 安装前端依赖 |
cargo tauri dev | 启动开发环境(热更新) |
cargo tauri build | 打包桌面应用(生成 Windows .exe/mac .dmg/Linux .deb 安装包) |
cargo tauri info | 排查环境问题(依赖缺失、Rust 版本不够等) |
| Ctrl+Shift+i | 弹出控制台框,以查看程序执行的控制台输出(如错误信息等) |
7 总结
我带您玩了整个流程,其特点就是 “零配置快速上手”:脚手架帮你搭好 JS 前端和 Rust 后端的骨架,不用管复杂配置,只需:
- 在
src/写前端界面和 JS 交互; - 需系统功能(读写文件、托盘图标)时,改
src-tauri/main.rs; - 用
cargo tauri dev开发、cargo tauri build打包,全程简单高效。
遇到依赖安装慢、窗口弹不出,先换淘宝镜像再装依赖,或用 npm run tauri info 排查环境~
