Rust桌面应用开发工具create-tauri-app的使用:快速构建跨平台Tauri应用的脚手架工具
Rust桌面应用开发工具create-tauri-app的使用:快速构建跨平台Tauri应用的脚手架工具
使用方法
要开始使用create-tauri-app
,在您想要设置项目的文件夹中运行以下命令之一。
Bash:
sh <(curl https://create.tauri.app/sh)
或
sh <(wget https://create.tauri.app/sh)
Powershell:
irm https://create.tauri.app/ps | iex
Cargo:
cargo install create-tauri-app --locked
cargo create-tauri-app
NPM:
npm create tauri-app@latest
Yarn:
yarn create tauri-app
PNPM:
pnpm create tauri-app
Deno
deno run -A npm:create-tauri-app
Bun:
bunx create-tauri-app
搭建新项目(交互式)
按照提示选择您的项目名称、前端语言、包管理器、前端框架以及适用的前端框架选项。
- 选择一个名称和一个包标识符(应用程序的唯一ID):
? Project name (tauri-app) ›
? Identifier (com.tauri-app.app) ›
- 选择您的前端语言:
? Choose which language to use for your frontend ›
Rust (cargo)
TypeScript / JavaScript (pnpm, yarn, npm, bun)
.NET (dotnet)
- 选择一个包管理器(如果有多个可用):
TypeScript / JavaScript的选项:
? Choose your package manager ›
pnpm
yarn
npm
bun
- 选择一个UI模板和风格(如果有多个可用):
Rust的选项:
? Choose your UI template ›
Vanilla
Yew
Leptos
Sycamore
TypeScript / JavaScript的选项:
? Choose your UI template ›
Vanilla
Vue
Svelte
React
Solid
Angular
Preact
? Choose your UI flavor ›
TypeScript
JavaScript
.NET的选项:
? Choose your UI template ›
Blazor
完成后,工具会报告模板已创建并显示如何使用配置的包管理器运行它。如果检测到您的系统缺少依赖项,它会打印一个包列表并提示如何安装它们。
搭建新项目(非交互式)
您还可以通过额外的命令行选项直接指定项目名称、包管理器和您想使用的模板。例如,要在my-tauri-app
目录中搭建一个Svelte项目,运行:
# curl
sh <(curl https://create.tauri.app/sh) my-tauri-app --template svelte
# wget
sh <(wget https://create.tauri.app/sh) my-tauri-app --template svelte
# powershell
$env:CTA_ARGS="--template svelte";irm https://create.tauri.app/ps | iex
# cargo
cargo create-tauri-app my-tauri-app --template svelte
# npm 6.x
npm create tauri-app@latest my-tauri-app --template svelte
# npm 7+, 需要额外的双破折号:
npm create tauri-app@latest my-tauri-app -- --template svelte
# yarn
yarn create tauri-app my-tauri-app --template svelte
# pnpm
pnpm create tauri-app my-tauri-app --template svelte
# deno
deno run -A npm:create-tauri-app --template svelte
# Bun
bunx create-tauri-app my-tauri-app --template svelte
当前支持的模板预设包括:
vanilla
vanilla-ts
vue
vue-ts
svelte
svelte-ts
react
react-ts
preact
preact-ts
solid
solid-ts
angular
yew
leptos
sycamore
blazor
您可以使用.
作为项目名称在当前目录中搭建项目。
版本控制
create-tauri-app遵循语义化版本控制2.0。
许可证
代码:© 2022 - The Tauri Programme within The Commons Conservancy.
MIT或MIT/Apache 2.0,适用时。
Logo: CC-BY-NC-ND
- 原始Tauri Logo设计由Daniel Thompson-Yvetot和Guillaume Chau提供
完整示例
以下是一个使用create-tauri-app创建React TypeScript项目的完整示例:
# 使用npm创建React TypeScript项目
npm create tauri-app@latest my-react-app --template react-ts
# 进入项目目录
cd my-react-app
# 安装依赖
npm install
# 运行开发模式
npm run tauri dev
项目结构说明:
my-react-app/
├── src/ # 前端源代码
│ ├── App.tsx # 主React组件
│ └── main.tsx # 前端入口文件
├── src-tauri/ # Rust后端代码
│ ├── Cargo.toml # Rust包管理文件
│ └── src/main.rs # 主Rust文件
├── public/ # 静态资源
└── package.json # 前端依赖管理
完整示例demo
以下是一个创建Vue TypeScript项目的完整示例:
# 使用pnpm创建Vue TypeScript项目
pnpm create tauri-app my-vue-app --template vue-ts
# 进入项目目录
cd my-vue-app
# 安装依赖
pnpm install
# 运行开发模式
pnpm run tauri dev
项目结构说明:
my-vue-app/
├── src/ # 前端源代码
│ ├── App.vue # 主Vue组件
│ ├── main.ts # 前端入口文件
│ └── components/ # Vue组件目录
├── src-tauri/ # Rust后端代码
│ ├── Cargo.toml # Rust包管理文件
│ └── src/main.rs # 主Rust文件
├── public/ # 静态资源
├── index.html # 主HTML文件
└── package.json # 前端依赖管理
主Vue组件示例(App.vue):
<template>
<div class="container">
<h1>Welcome to Tauri + Vue!</h1>
<button @click="greet">Greet</button>
<p>{{ message }}</p>
</div>
</template>
<script lang="ts">
import { ref } from 'vue'
import { invoke } from '@tauri-apps/api/tauri'
export default {
setup() {
const message = ref('')
async function greet() {
// 调用Rust后端的greet函数
message.value = await invoke('greet', { name: 'Vue' })
}
return { message, greet }
}
}
</script>
<style scoped>
.container {
text-align: center;
padding: 20px;
}
</style>
Rust后端代码示例(main.rs):
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
// 定义前端可以调用的命令
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}
fn main() {
tauri::Builder::default()
// 注册命令
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
create-tauri-app 使用指南:快速构建跨平台Tauri应用的脚手架工具
工具介绍
create-tauri-app
是一个用于快速创建 Tauri 应用程序的脚手架工具。它简化了 Tauri 项目的初始化过程,提供了多种前端框架模板选择,让开发者能够专注于应用开发而不是配置。
Tauri 是一个使用 Rust 构建的框架,用于创建轻量级、高性能的桌面应用程序,支持 Windows、macOS 和 Linux 平台。
安装方法
首先确保系统已安装 Node.js (推荐 LTS 版本),然后运行以下命令安装工具:
npm create tauri-app@latest
# 或
yarn create tauri-app
# 或
pnpm create tauri-app
使用方法
1. 创建新项目
运行以下命令并按照提示操作:
npm create tauri-app@latest
交互式命令行会引导你完成项目创建:
- 输入项目名称
- 选择包管理器 (npm/yarn/pnpm)
- 选择前端框架 (Vanilla/React/Vue/Svelte/Solid等)
- 选择 UI 框架 (可选)
- 选择 TypeScript 或 JavaScript
2. 项目结构
创建的项目通常包含以下关键部分:
your-project/
├── src/ # 前端源代码
├── src-tauri/ # Tauri Rust 后端代码
│ ├── Cargo.toml # Rust 项目配置
│ ├── src/ # Rust 源代码
│ └── tauri.conf.json # Tauri 应用配置
├── package.json # 前端项目配置
└── ... # 其他配置文件
3. 开发与构建
# 进入项目目录
cd your-project
# 开发模式 (热重载)
npm run tauri dev
# 生产构建
npm run tauri build
示例
创建 React + TypeScript 项目
npm create tauri-app@latest
# 选择项目名: my-app
# 选择包管理器: npm
# 选择框架: React
# 选择语言: TypeScript
修改 Rust 后端代码
编辑 src-tauri/src/main.rs
添加自定义命令:
// 定义一个Tauri命令
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
fn main() {
tauri::Builder::default()
// 注册greet命令处理器
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("运行Tauri应用时出错");
}
前端调用 Rust 命令 (React 示例)
import { invoke } from '@tauri-apps/api';
import { useState } from 'react';
function App() {
const [greeting, setGreeting] = useState('');
async function sayHello() {
// 调用Rust后端的greet命令
const response = await invoke<string>('greet', { name: 'World' });
setGreeting(response);
}
return (
<div>
<button onClick={sayHello}>Greet</button>
<p>{greeting}</p>
</div>
);
}
高级配置
修改 Tauri 配置
编辑 src-tauri/tauri.conf.json
可以修改应用配置:
{
"build": {
"distDir": "../dist", // 前端构建输出目录
"devPath": "http://localhost:3000" // 开发服务器地址
},
"tauri": {
"allowlist": {
"all": true // 允许所有API
},
"bundle": {
"identifier": "com.example.myapp", // 应用标识符
"icon": ["icons/32x32.png", "icons/128x128.png"] // 应用图标
},
"windows": [
{
"title": "My Tauri App", // 窗口标题
"width": 800, // 窗口宽度
"height": 600 // 窗口高度
}
]
}
}
完整示例Demo
下面是一个完整的Tauri应用示例,包含前端React界面和后端Rust交互:
- 首先创建项目:
npm create tauri-app@latest
# 选择项目名: demo-app
# 选择包管理器: npm
# 选择框架: React
# 选择语言: TypeScript
- 修改
src-tauri/src/main.rs
:
// 定义Tauri命令
#[tauri::command]
fn calculate(a: f64, b: f64, op: &str) -> Result<f64, String> {
match op {
"+" => Ok(a + b),
"-" => Ok(a - b),
"*" => Ok(a * b),
"/" => {
if b == 0.0 {
Err("Cannot divide by zero".to_string())
} else {
Ok(a / b)
}
}
_ => Err("Invalid operation".to_string()),
}
}
fn main() {
tauri::Builder::default()
// 注册calculate命令处理器
.invoke_handler(tauri::generate_handler![calculate])
.run(tauri::generate_context!())
.expect("运行Tauri应用时出错");
}
- 修改前端
src/App.tsx
:
import { invoke } from '@tauri-apps/api';
import { useState } from 'react';
function App() {
const [a, setA] = useState('0');
const [b, setB] = useState('0');
const [op, setOp] = useState('+');
const [result, setResult] = useState('');
const [error, setError] = useState('');
async function calculate() {
try {
setError('');
const res = await invoke<number>('calculate', {
a: parseFloat(a),
b: parseFloat(b),
op
});
setResult(res.toString());
} catch (err) {
setError(err as string);
setResult('');
}
}
return (
<div style={{ padding: '20px' }}>
<h1>Tauri Calculator</h1>
<div>
<input
type="number"
value={a}
onChange={(e) => setA(e.target.value)}
/>
<select value={op} onChange={(e) => setOp(e.target.value)}>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input
type="number"
value={b}
onChange={(e) => setB(e.target.value)}
/>
<button onClick={calculate}>=</button>
</div>
{result && <div>Result: {result}</div>}
{error && <div style={{ color: 'red' }}>Error: {error}</div>}
</div>
);
}
export default App;
- 运行开发服务器:
npm run tauri dev
注意事项
- 确保系统已安装 Rust 工具链 (
rustup
和cargo
) - 不同平台可能需要额外依赖 (如 Windows 需要 WebView2)
- 生产构建时,Tauri 会自动下载必要的构建工具
create-tauri-app
大大简化了 Tauri 应用的初始设置过程,让开发者能够快速开始构建跨平台桌面应用。