Rust桌面应用开发工具create-tauri-app的使用:快速构建跨平台Tauri应用的脚手架工具

Rust桌面应用开发工具create-tauri-app的使用:快速构建跨平台Tauri应用的脚手架工具

Rapidly scaffold out a new Tauri app project.

使用方法

要开始使用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

搭建新项目(交互式)

按照提示选择您的项目名称、前端语言、包管理器、前端框架以及适用的前端框架选项。

  1. 选择一个名称和一个包标识符(应用程序的唯一ID):
? Project name (tauri-app) ›
? Identifier (com.tauri-app.app) ›
  1. 选择您的前端语言:
? Choose which language to use for your frontend ›
Rust  (cargo)
TypeScript / JavaScript  (pnpm, yarn, npm, bun)
.NET  (dotnet)
  1. 选择一个包管理器(如果有多个可用):

TypeScript / JavaScript的选项:

? Choose your package manager ›
pnpm
yarn
npm
bun
  1. 选择一个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");
}

1 回复

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

交互式命令行会引导你完成项目创建:

  1. 输入项目名称
  2. 选择包管理器 (npm/yarn/pnpm)
  3. 选择前端框架 (Vanilla/React/Vue/Svelte/Solid等)
  4. 选择 UI 框架 (可选)
  5. 选择 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交互:

  1. 首先创建项目:
npm create tauri-app@latest
# 选择项目名: demo-app
# 选择包管理器: npm
# 选择框架: React
# 选择语言: TypeScript
  1. 修改 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应用时出错");
}
  1. 修改前端 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;
  1. 运行开发服务器:
npm run tauri dev

注意事项

  1. 确保系统已安装 Rust 工具链 (rustupcargo)
  2. 不同平台可能需要额外依赖 (如 Windows 需要 WebView2)
  3. 生产构建时,Tauri 会自动下载必要的构建工具

create-tauri-app 大大简化了 Tauri 应用的初始设置过程,让开发者能够快速开始构建跨平台桌面应用。

回到顶部