ビルドのカスタマイズ
Task と Taskfile.yml を使用してビルドプロセスをカスタマイズする
概要
Wails のビルドシステムは、Wails アプリケーションのビルドプロセスを効率化するために設計された、柔軟で強力なツールです。タスクを簡単に定義して実行できるタスクランナー、Taskを活用しています。v3 のビルドシステムがデフォルトですが、Wails は「独自のツールを持ち込む」アプローチを推奨しており、開発者は必要に応じてビルドプロセスをカスタマイズできます。
Task の使用方法について詳しくは、公式ドキュメントを参照してください。
Task:ビルドシステムの中核
Task は、Go で記述された Make のモダンな代替ツールです。YAML ファイルを使用して、タスクとその依存関係を定義します。Wails のビルドシステムでは、Task がビルドプロセスのオーケストレーションにおいて中心的な役割を果たします。
メインの Taskfile.yml はプロジェクトルートにあり、プラットフォーム固有のタスクは build/<platform>/Taskfile.yml ファイルで定義されます。build ディレクトリ内の共通 Taskfile.yml ファイルには、プラットフォーム間で共有される共通タスクが含まれています。
- 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
各プラットフォームには、build ディレクトリ配下の各プラットフォーム用ディレクトリに専用の Taskfile があります。これらのファイルでは、そのプラットフォームの主要なタスクを定義します。各 Taskfile は、build/Taskfile.yml ファイルの共通タスクを取り込みます。
Windows
場所:build/windows/Taskfile.yml
Windows 固有の Taskfile には、Windows 上でアプリケーションをビルド、パッケージ化、実行するためのタスクが含まれています。主な機能は次のとおりです。
- 任意の本番環境向けフラグを使用したビルド
.icoアイコンファイルの生成- Windows の
.sysoファイルの生成 - パッケージ化用 NSIS インストーラーの作成
Linux
場所:build/linux/Taskfile.yml
Linux 固有の Taskfile には、Linux 上でアプリケーションをビルド、パッケージ化、実行するためのタスクが含まれています。主な機能は次のとおりです。
- 任意の本番環境向けフラグを使用したビルド
- AppImage、deb、rpm、および Arch Linux パッケージの作成
- Linux アプリケーション用
.desktopファイルの生成
macOS
場所:build/darwin/Taskfile.yml
macOS 固有の Taskfile には、macOS 上でアプリケーションをビルド、パッケージ化、実行するためのタスクが含まれています。主な機能は次のとおりです。
- amd64、arm64、および universal(両方)の各アーキテクチャ向けバイナリのビルド
.icnsアイコンファイルの生成- 配布用
.appバンドルの作成 .appバンドルのアドホック署名- 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 形式を使用して、CLI 変数をタスクに渡せます。これらの変数はエイリアスコマンドを介して転送されます。
# 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ライブラリは、ファイルの変更を監視し、再ビルドをトリガーします。./build/config.ymlファイルのdev_modeキーに定義された設定を使用します。
特定のディレクトリやファイルを無視する設定、監視対象とするファイルの指定、変更を検出した際に実行する処理の指定が可能です。
デフォルト設定でも十分に機能しますが、必要に応じて自由にカスタマイズできます。
設定
構造の例を次に示します。
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では開発時のブラウザ使用を完全にサポートしていましたが、多くの混乱を招いていました。ブラウザで動作するアプリケーションがデスクトップアプリケーションでも必ず動作するとは限りません。これは、ブラウザAPIの一部がWebViewでは利用できないためです。
UIを中心とする開発作業では、v3でも開発モードでhttp://localhost:9245のVite URLにアクセスすることで、ブラウザを柔軟に使用できます。これにより、スタイルやレイアウトの作業中に高機能なブラウザ開発者ツールを利用できます。ただし、このモードではGoバインディングが動作しないことに注意してください。
バインディングやイベントなどの機能をテストする段階になったら、デスクトップ表示に切り替え、本番環境ですべてが正しく動作することを確認してください。