Compilations manuelles
Le CLI Wails fait beaucoup de travail pour le projet, mais il est parfois souhaitable de construire manuellement votre projet. Ce document discutera des différentes opérations que fait le CLI et des différentes façons d'y parvenir.
Processus de construction
Lorsque wails build
ou wails dev
sont utilisés, le CLI Wails effectue un processus de construction commun:
- Installation des dépendances frontend
- Construire le projet frontend
- Générer des ressources de construction
- Compiler l'application
- [optionnel] Compresser l'application
Installation des dépendances frontend
Étapes CLI
- Si l'option
-s
est donné, cette étape est ignorée - Vérifie
wails.json
pour voir s'il y a une commande install dansfrontend:install
- S'il n'y en a pas, il saute cette étape
- Si le fichier existe, vérifie si
package.json
existe dans le répertoire du frontend. S'il n'existe pas, il saute cette étape - Un hash MD5 est générée à partir du contenu du fichier
package.json
- Il vérifie l'existence de
package.json.md5
et, s'il existe, compare son contenu (une somme MD5) avec celui généré pour voir si le contenu a changé. S'ils sont les mêmes, cette étape est ignorée - Si
package.json.md5
n'existe pas, il le crée en utilisant la somme MD5 générée - Si une compilation est maintenant requise, ou si
node_modules
n'existe pas, ou si l'option-f
est donnée, la commande install est exécutée dans le répertoire frontend
Étapes manuelles
Cette étape peut être réalisée à partir de la ligne de commande ou d'un script avec npm install
.
Construire le projet frontend
CLI Wails
- Si l'option
-s
est donné, cette étape est ignorée - Vérifie
wails.json
pour voir s'il y a une commande de construction dans la cléfrontend:build
- S'il n'y en a pas, il saute cette étape
- S'il existe, il est exécuté dans le répertoire du frontend
Étapes manuelles
Cette étape peut être réalisée à partir de la ligne de commande ou d'un script avec npm run build
ou quel que soit le script de construction du frontend.
Générer les ressources
CLI Wails
- Si l'option
-nopackage
est activée, cette étape est ignorée - Si le fichier
build/appicon.png
n'existe pas, un fichier par défaut est créé - Pour Windows, voir Empaquetage pour Windows
- Si
build/windows/icon.ico
n'existe pas, il la créera à partir de l'imagebuild/appicon.png
.
Windows
- If
build/windows/icon.ico
does not exist, it will create it frombuild/appicon.png
using icon sizes of 256, 128, 64, 48, 32 and 16. This is done using winicon. - If the
build/windows/<projectname>.manifest
file does not exist, it creates it from a default version. - Compiles the application as a production build (above)
- Uses winres to bundle the icon and manifest into a
.syso
file ready for linking.
Étapes manuelles
- Create
icon.ico
using the winicon CLI tool (or any other tool). - Create / Update a
.manifest
file for your application - Use the winres CLI to generate a
.syso
file.
Compiler l'application
CLI Wails
- If the
-clean
flag is provided, thebuild
directory is deleted and recreated - For
wails dev
, the following default Go flags are used:-tags dev -gcflags "all=-N -l"
- For
wails build
, the following default Go flags are used:-tags desktop,production -ldflags "-w -s"
- On Windows,
-ldflags "-w -h -H windowsgui"
- On Windows,
- Additional tags passed to the CLI using
-tags
are added to the defaults - Additional ldflags passed to the CLI using
-ldflags
are added to the defaults - The
-o
flag is passed through - The Go compiler specified by
-compiler
will be used for compilation
Manual steps
- For dev build, the minimum command would be:
go build -tags dev -gcflags "all=-N -l"
- For production build, the minimum command would be:
go build -tags desktop,production -ldflags "-w -s -H windowsgui"
- Ensure that you compile in the same directory as the
.syso
file
Compress application
CLI Wails
- If the
-upx
flag has been given, theupx
program will be run to compress the application with the default settings - If
-upxflags
is also passed, these flags are used instead of the default ones
Manual steps
- Run
upx [flags]
manually to compress the application.