Сборка 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)¶
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 для подписи кода и пространства имён Keychainbundle.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 для обложек