当前位置: 首页 > news >正文

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 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.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,替换内容(加标题和按钮):
<!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>
  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 排查环境~

http://www.dtcms.com/a/589481.html

相关文章:

  • 光的压缩态:突破量子极限的 “超精准光源” 科普详解
  • 【C++】分治-归并排序算法习题
  • 网站开发服务合同印花税wordpress主题微博
  • 网站 功能呢杭州如何设计公司网站
  • Ansys SAM 与 Scade One:重塑安全关键系统开发的 MBSE 新范式
  • ADC的学习
  • 【智能体】扣子平台 ① 构建智能体工作流:从提示词到JSON配置的全流程实践
  • GitHub 热榜项目 - 日榜(2025-11-08)
  • 20_FastMCP 2.x 中文文档之FastMCP服务端认证:令牌验证详解
  • 缅甸最新消息seo数据分析哪些方面
  • 2.6 LoRA 微调实战(使用 PEFT 库)
  • 建设电子商务网站的目的公司企业网站建设方案书
  • 项目三:信息抽取与图谱问答(医疗科研文献知识图谱与智能问答平台)
  • Sequelize:获取器, 设置器 虚拟字段
  • DINOv3的学习
  • 建网站需要哪些费用温州微信网站开发
  • 数据结构精讲:从栈的定义到链式实现,再到LeetCode实战
  • MediaPipe入门指南:跨平台机器学习推理框架入门与实践
  • 西安高端网站开发郑州外贸网络推广
  • C 错误处理
  • seo专业培训费用自媒体seo优化
  • 做的网站百度没收录wordpress后台登陆界面
  • 基于430单片机多用途定时提醒器设计
  • 【C++】Reactor和Proactor
  • MCP概念及NetSuite应用与拓展
  • 深圳外贸网站建设公司帮别人做网站开价
  • 基于nginx的openlab的网站配置
  • web开发,在线%超市销售%管理系统,基于idea,html,jsp,java,ssh,sql server数据库。
  • Linux复习:系统调用与fork
  • 做网站需要哪些成本全屋定制网络平台