3.1 创建第一个 Tauri 应用

原文链接: Create a Project

3.1 创建第一个 Tauri 应用

这一节我们用官方脚手架快速创建一个“能打开的窗口”,体验从命令到桌面的完整流程。

方式一:使用 create-tauri-app(推荐)

create-tauri-app 是官方脚手架,能生成一个已配置好的 Tauri 项目。在你想放项目的位置打开终端,然后运行:

1
npm create tauri-app@latest

如果你没装 Node,也可以用 Cargo 安装脚手架:cargo install create-tauri-app --locked,之后运行 cargo create-tauri-app。

按提示回答几个问题:

1
2
3
4
5
? Project name › my-tauri-app
? Identifier › com.example.my-tauri-app
? Choose which language to use for your frontend › TypeScript / JavaScript
? Choose your package manager › npm
? Choose your UI template › Vanilla

这里有几个建议:

  • Project name:建议小写英文,例如 tauri-demo。
  • Identifier:反向域名格式,如 com.example.tauridemo。它会成为应用的“身份证”,以后上架商店、做系统集成都会用到。
  • UI template:第一次学习建议选 Vanilla(无框架),先聚焦 Tauri 本身;熟悉后再换成 React/Vue/Svelte。

安装依赖并启动

1
2
3
cd my-tauri-app
npm install
npm run tauri dev

第一次运行 tauri dev 时,Cargo 要下载并编译大量 Rust 依赖,等待几分钟很常见,这不是卡死。编译完成后会弹出一个原生窗口,里面显示你的 Web 页面。

提示:用 tauri dev 在终端里调试时通常不会遇到“无法验证开发者”提示;只有把 tauri build 生成的 .app 分享给其他 Mac 时,系统才可能因未签名而拦截。此时可通过“系统设置 → 隐私与安全性”选择仍要打开,或完成正式签名。

方式二:给已有前端项目添加 Tauri

如果已有 Vite 等前端工程,可以用 CLI 只初始化 Rust 后端:

1
2
npm install -D @tauri-apps/cli@latest
npx tauri init

已有前端工程里通常还没有 "tauri": "tauri" 脚本,所以先使用 npx tauri init;由 create-tauri-app 生成的项目则可以直接 npm run tauri init。

npx tauri init 会问几个问题,例如:

  • 应用名称;
  • 窗口标题;
  • 前端开发服务器地址(如 Vite 的 http://localhost:5173);
  • 前端构建输出目录(如 ../dist);
  • devUrl 与 beforeDevCommand。

初始化后目录里会多出 src-tauri/。因为还没有 "tauri": "tauri" 脚本,先用 npx 启动:

1
npx tauri dev

想沿用 npm run tauri dev 的写法,就在 package.json 的 scripts 中加入 "tauri": "tauri"。

目录里出现了什么

创建成功后,项目根部大致如下(细节见 3.2 项目结构):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
my-tauri-app/
├── package.json
├── index.html
├── src/
└── src-tauri/
    ├── Cargo.toml
    ├── tauri.conf.json
    ├── build.rs
    ├── capabilities/
    ├── icons/
    └── src/
        ├── main.rs
        └── lib.rs

常见问题速查

现象原因与做法
rustc not foundRust 没装好或终端没重启,重开终端并检查 rustc --version
node: command not foundNode.js 未安装或未加入 PATH
首次 tauri dev 很慢正在编译 Rust 依赖,第二次会快很多
窗口打开了但页面空白检查前端是否成功启动,以及 devUrl 端口是否一致

下一步

窗口已经能打开,但你还不清楚里面每个文件的意义。请阅读 3.2 项目结构详解,把工程“读”懂。