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

浙公网安备 33010602011771号