Перейти к содержанию

Сборка Tauri + Cargo

neegde-tauri собирается с помощью cargo tauri dev (разработка) и cargo tauri build (релиз). CLI Tauri координирует Vite для фронтенда и Cargo для бэкенда на Rust, затем упаковывает оба компонента в нативный .app / .dmg.

Источники: src-tauri/Cargo.toml, src-tauri/tauri.conf.json


Команды сборки

cargo tauri dev      # dev-сервер Vite + Tauri в режиме горячей перезагрузки (watch mode)
cargo tauri build    # релизный бандл (.app + .dmg на macOS)
cargo check          # проверка типов только Rust, без компиляции C++ (быстро)

Скрипт build.rs запускается как часть cargo build. Он вызывает cmake::Config::build(), который конфигурирует, компилирует и устанавливает vozduxan (см. Сборка vozduxan через CMake).


Результаты сборки

src-tauri/target/
  debug/
    neegde               ← debug-исполняемый файл
    neegde.app/          ← бандл macOS .app (debug)
  release/
    neegde               ← release-исполняемый файл
    bundle/
      macos/
        neegde.app/      ← подписанный .app
        neegde_*.dmg     ← распространяемый образ диска

Все постоянные данные находятся рядом с исполняемым файлом (neegde.app/Contents/MacOS/), а не в ~/Library/Application Support. Эта портативная структура означает, что перемещение .app перемещает все его данные.


Основные зависимости Cargo

Крейт Назначение
tauri 2 Фреймворк Tauri, IPC, управление WebView
tauri-build Генерация кода во время сборки для Tauri
cmake Запуск CMake из build.rs для сборки vozduxan
reqwest HTTP-клиент для RuTracker и Brave Search
tokio Асинхронный runtime (полный набор функций)
serde / serde_json Сериализация для всех типов IPC
base64 Кодирование файлов .torrent, data URL изображений
encoding_rs Декодирование Windows-1251 для ответов RuTracker
reqwest_cookie_store Сохранение cookie сессии phpBB
dashmap Lock-free concurrent map (маршрутизация search token-ов SoulSeek)
argon2 Решение PoW-задачи Brave Search
md5 Хеш входа SoulSeek, ключ cache обложек SoulSeek
flate2 Zlib-декомпрессия для FileSearchResponse
lru LRU cache обложек
tokio-util Вспомогательные инструменты Codec

Различия debug и release

Функция Debug-сборка Release-сборка
Путь BT-сессии {exe_dir}/dev/bt/ {exe_dir}/bt/
Dev-дампы поиска {exe_dir}/dev/dumps/ отключено
Окно отладки Открывается автоматически в App.vue Только при URL ?app-debug
cfg!(debug_assertions) true false

Изоляция dev/bt/ предотвращает загрязнение production-директории данных dev-сессиями libtorrent (накопленный piece cache, таблица маршрутизации DHT) на той же машине.


Сборка фронтенда (Vite)

vite build     # production-бандл фронтенда → dist/

Tauri встраивает вывод dist/ в бандл приложения в Contents/Resources/_app_. В режиме разработки cargo tauri dev запускает Vite на http://localhost:1420, и WebView Tauri загружается оттуда.

vite.config.js настраивает: - base: "./" — относительные пути для встроенных ресурсов - Псевдонимы путей TypeScript для импортов из src/ - Целевая платформа сборки: esnext (современный Chromium/WKWebView)


Важные настройки tauri.conf.json

  • bundle.identifier: ru.neegde.app — используется macOS для подписи кода и пространства имён Keychain
  • bundle.icon: иконка приложения в нескольких размерах
  • security.csp: "default-src 'self'; connect-src 'self' http://127.0.0.1:*; media-src 'self' http://127.0.0.1:*; img-src 'self' data: http://127.0.0.1:*" — разрешает WebView загружать данные с локальных HTTP streaming серверов и отображать data: URL для обложек