Tauri高效搭建环境

想用Rust Tauri开发的小伙伴们有福了!这里快速讲解如何即快速、又无障碍的搭建一个Rust Tauri开发基础环境。跟着做!

一、先安装npm

你可能问为啥?可不可以不用npm。回答是:可以!但你需要自己手工安装很多东西,不是缺少东西,就是搞错东西!用npm的目的就是方便而已。

npm 不用单独装,装 Node.js 就自带,单独装npm更费事!下面是具体安装、验证、版本管理和优化步骤,简单好懂:

1 安装 Node.js(npm 自动附带)

(1)官方安装包(新手首选)
  1. 打开Node.js 官网下载页,选「LTS 版本」(稳定不踩坑),别选 Current 版。
  2. 分系统安装:
    • 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.jsJS 逻辑核心:比如按钮点击、调用系统通知等
src-tauri/控制桌面能力的 “后台”:不用写 Rust 也能先用,后续加功能再改
src-tauri/tauri.conf.json应用配置:改窗口大小、图标、是否允许访问本地文件等
package.json前端 “说明书”:记录项目名、依赖,以及 npm run tauri dev 这类启动命令

5 实战:简单开发示例(快速体验)

(1)启动应用

执行 cargo tauri dev,桌面会弹出默认窗口(如上图)。程序结果以热更新的形式出现了,所谓热更新,就是你修改程序时,这个程序窗口会自动更新(所见即所得)。

(2)修改页面 + 加交互
  1. 打开 src/index.html,替换内容(加标题和按钮):


  
    
    
    
    Tauri演示应用
    <script src="/main.js" defer></script>
  
  
    

欢迎使用Tauri

点击Tauri标志了解更多关于这个框架的信息

  1. 打开 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 = "发生错误,请重试";
    }
  });
});
  1. 保存后,窗口自动刷新,点击按钮就能看到系统通知。(这时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 后端的骨架,不用管复杂配置,只需:

  1. 在 src/ 写前端界面和 JS 交互;
  2. 需系统功能(读写文件、托盘图标)时,改 src-tauri/main.rs
  3. 用 cargo tauri dev 开发、cargo tauri build 打包,全程简单高效。

遇到依赖安装慢、窗口弹不出,先换淘宝镜像再装依赖,或用 npm run tauri info 排查环境~

posted @ 2025-12-08 16:46  yangykaifa  阅读(7)  评论(0)    收藏  举报