Настройка сборки
Настройте процесс сборки с помощью Task и Taskfile.yml
Обзор
Система сборки Wails — это гибкий и мощный инструмент, призванный упростить сборку приложений Wails. В ней используется Task — средство запуска задач, с помощью которого можно легко определять и выполнять задачи. Хотя система сборки v3 используется по умолчанию, Wails поддерживает подход «используйте собственные инструменты», позволяя разработчикам настраивать процесс сборки по мере необходимости.
Подробнее об использовании Task см. в официальной документации.
Task — основа системы сборки
Task — современная альтернатива Make, написанная на Go. Для определения задач и их зависимостей она использует файл YAML. В системе сборки Wails Task играет центральную роль в координации процесса сборки.
Основной файл Taskfile.yml находится в корне проекта, а задачи для отдельных платформ определены в файлах build/<platform>/Taskfile.yml. Файл общих задач Taskfile.yml в каталоге build содержит задачи, используемые на всех платформах.
- Project Root
- Taskfile.yml
- build
- windows/Taskfile.yml
- darwin/Taskfile.yml
- linux/Taskfile.yml
- Taskfile.yml
Taskfile.yml
Файл Taskfile.yml в корне проекта — основная точка входа в систему сборки. В нём определены задачи и их зависимости. Ниже приведён файл Taskfile.yml по умолчанию:
version: '3'
includes:
common: ./build/Taskfile.yml
windows: ./build/windows/Taskfile.yml
darwin: ./build/darwin/Taskfile.yml
linux: ./build/linux/Taskfile.yml
vars:
APP_NAME: "myproject"
BIN_DIR: "bin"
VITE_PORT: '{{.WAILS_VITE_PORT | default 9245}}'
tasks:
build:
summary: Builds the application
cmds:
- task: "{{OS}}:build"
package:
summary: Packages a production build of the application
cmds:
- task: "{{OS}}:package"
run:
summary: Runs the application
cmds:
- task: "{{OS}}:run"
dev:
summary: Runs the application in development mode
cmds:
- wails3 dev -config ./build/config.yml -port {{.VITE_PORT}}
Файлы Taskfile для отдельных платформ
У каждой платформы есть собственный Taskfile, расположенный в каталогах платформ внутри каталога build. Эти файлы определяют основные задачи для соответствующей платформы. Каждый Taskfile подключает общие задачи из файла build/Taskfile.yml.
Windows
Расположение: build/windows/Taskfile.yml
Taskfile для Windows содержит задачи для сборки, упаковки и запуска приложения в Windows. Основные возможности:
- Сборка с необязательными флагами для рабочей версии
- Создание файла значка
.ico - Создание файла Windows
.syso - Создание установщика NSIS для упаковки
Linux
Расположение: build/linux/Taskfile.yml
Taskfile для Linux содержит задачи для сборки, упаковки и запуска приложения в Linux. Основные возможности:
- Сборка с необязательными флагами для рабочей версии
- Создание пакетов AppImage, deb, rpm и Arch Linux
- Создание файла
.desktopдля приложений Linux
macOS
Расположение: build/darwin/Taskfile.yml
Taskfile для macOS содержит задачи для сборки, упаковки и запуска приложения в macOS. Основные возможности:
- Сборка исполняемых файлов для архитектур amd64, arm64 и universal (обе архитектуры)
- Создание файла значка
.icns - Создание пакета
.appдля распространения - Подпись пакетов
.appв режиме ad-hoc - Настройка флагов сборки и переменных среды для macOS
Выполнение задач и псевдонимы команд
Команда wails3 task представляет собой встроенную версию Taskfile, которая выполняет задачи, определённые в вашем файле Taskfile.yml.
Команды wails3 build и wails3 package являются псевдонимами для wails3 task build и wails3 task package соответственно. При выполнении этих команд Wails преобразует их во внутреннем представлении в выполнение соответствующих задач:
wails3 build→wails3 task buildwails3 package→wails3 task package
Передача параметров задачам
Переменные командной строки можно передавать задачам в формате KEY=VALUE. Эти переменные перенаправляются через команды-псевдонимы:
# These are equivalent:
wails3 build PLATFORM=linux CONFIG=production
wails3 task build PLATFORM=linux CONFIG=production
# Package with custom version:
wails3 package VERSION=2.0.0 OUTPUT=myapp.pkg
В файле Taskfile.yml к этим переменным можно обращаться с помощью синтаксиса шаблонов Go:
tasks:
build:
cmds:
- echo "Building for {{.PLATFORM | default "darwin"}}"
- go build -tags {{.CONFIG | default "debug"}} -o myappОбщий процесс сборки
На всех платформах процесс сборки обычно включает следующие этапы:
- Приведение модулей Go в порядок
- Сборка фронтенда
- Создание значков
- Компиляция кода Go с флагами для соответствующей платформы
- Упаковка приложения (для соответствующей платформы)
Настройка процесса сборки
Хотя система сборки v3 предоставляет надёжную конфигурацию по умолчанию, её можно легко адаптировать к потребностям проекта. Изменив Taskfile.yml и Taskfile для отдельных платформ, можно:
- Добавлять новые задачи
- Изменять существующие задачи
- Изменять порядок выполнения задач
- Интегрировать другие инструменты и сценарии
Благодаря этой гибкости можно адаптировать процесс сборки к конкретным требованиям, продолжая пользоваться структурой, которую предоставляет система сборки Wails.
Режим разработки
Система сборки Wails включает мощный режим разработки, который улучшает работу разработчика благодаря автоматической перезагрузке и горячей замене модулей. Этот режим активируется командой wails3 dev.
Принцип работы
При запуске wails3 dev выполняется следующий процесс:
- Команда проверяет наличие доступного порта; если порт не указан, по умолчанию используется 9245.
- Она настраивает переменные окружения для сервера разработки фронтенда (Vite).
- Она запускает средство наблюдения за файлами с помощью библиотеки refresh.
Библиотека refresh отслеживает изменения файлов и запускает повторную сборку. Она использует конфигурацию, заданную в разделе с ключом dev_mode файла ./build/config.yml.
Её можно настроить так, чтобы игнорировать определённые каталоги и файлы, выбирать отслеживаемые файлы и определять действия при обнаружении изменений.
Конфигурация по умолчанию подходит для большинства случаев, но при необходимости её можно адаптировать под свои задачи.
Конфигурация
Пример её структуры:
dev_mode:
root_path: .
log_level: warn
debounce: 1000
ignore:
dir:
- .git
- node_modules
- frontend
- bin
file:
- .DS_Store
- .gitignore
- .gitkeep
watched_extension:
- "*.go"
git_ignore: true
executes:
- cmd: wails3 task common:install:frontend:deps
type: once
- cmd: wails3 task common:dev:frontend
type: background
- cmd: go mod tidy
type: blocking
- cmd: wails3 task build
type: blocking
- cmd: wails3 task run
type: primaryЭтот файл конфигурации позволяет:
- Задать корневой путь для отслеживания файлов
- Настроить уровень журналирования
- Задать время устранения дребезга для событий изменения файлов
- Игнорировать определённые каталоги, файлы или расширения файлов
- Задать команды, выполняемые при изменении файлов
Настройка режима разработки
Режим разработки можно настроить, изменив эти значения в файле config.yml.
Возможные варианты настройки:
- Изменение отслеживаемых каталогов или файлов
- Изменение времени устранения дребезга для управления скоростью реакции системы на изменения
- Добавление или изменение выполняемых команд в соответствии с потребностями проекта
Использование браузера при разработке
Хотя Wails v2 полностью поддерживал использование браузера при разработке, это вызывало много недоразумений. Приложения, работавшие в браузере, не обязательно работали в настольном приложении, поскольку в WebView доступны не все API браузера.
При разработке пользовательского интерфейса в v3 по-прежнему можно использовать браузер, открыв в режиме разработки URL-адрес Vite по адресу http://localhost:9245. Это предоставляет доступ к мощным инструментам разработчика браузера при работе над стилями и компоновкой. Учтите, что привязки Go не будут работать в этом режиме.
Когда потребуется проверить такие функции, как привязки и события, просто переключитесь на представление настольного приложения, чтобы убедиться, что всё безупречно работает в рабочей среде.