跳至主要内容
版本:v2.9.0

手动构建

Wails CLI 为项目做了很多繁重的工作,但有时手动构建项目是可取的。本文档将讨论 CLI 执行的不同操作以及如何以不同的方式实现这些操作。

构建过程

使用 wails buildwails dev 时,Wails CLI 会执行一个通用的构建过程

- Install frontend dependencies
- Build frontend project
- Generate build assets
- Compile application
- [optional] Compress application

安装前端依赖项

CLI 步骤

  • 如果提供 -s 标志,则跳过此步骤
  • 检查 wails.json 以查看 frontend:install 键中是否存在安装命令
  • 如果不存在,则跳过此步骤
  • 如果存在,则检查前端目录中是否存在 package.json。如果不存在,则跳过此步骤
  • package.json 文件内容生成 MD5 校验和
  • 检查 package.json.md5 是否存在,如果存在,将比较其内容(MD5 校验和)与生成的校验和以查看内容是否已更改。如果相同,则跳过此步骤
  • 如果 package.json.md5 不存在,则使用生成的 MD5 校验和创建它
  • 如果现在需要构建,或者 node_modules 不存在,或者提供了 -f 标志,则在前端目录中执行安装命令

手动步骤

此步骤可以使用 npm install 从命令行或脚本中完成。

构建前端项目

Wails CLI

  • 如果提供 -s 标志,则跳过此步骤
  • 检查 wails.json 以查看 frontend:build 键中是否存在构建命令
  • 如果不存在,则跳过此步骤
  • 如果存在,则在前端目录中执行它

手动步骤

此步骤可以使用 npm run build 或前端构建脚本中的任何其他内容从命令行或脚本中完成。

生成资源

Wails CLI

  • 如果设置了 -nopackage 标志,则跳过此阶段
  • 如果 build/appicon.png 文件不存在,则会创建一个默认文件
  • 对于 Windows,请参阅 为 Windows 打包
  • 如果 build/windows/icon.ico 不存在,它将从 build/appicon.png 图像中创建它。
Windows
  • 如果 build/windows/icon.ico 不存在,它将使用 256、128、64、48、32 和 16 的图标大小从 build/appicon.png 创建它。这是使用 winicon 完成的。
  • 如果 build/windows/<projectname>.manifest 文件不存在,它将从默认版本创建它。
  • 将应用程序编译为生产版本(如上所示)
  • 使用 winres 将图标和清单捆绑到 .syso 文件中,准备链接。

手动步骤

  • 使用 winicon CLI 工具(或任何其他工具)创建 icon.ico
  • 为您的应用程序创建/更新 .manifest 文件
  • 使用 winres CLI 生成 .syso 文件。

编译应用程序

Wails CLI

  • 如果提供了 -clean 标志,则会删除 build 目录并重新创建它
  • 对于 wails dev,将使用以下默认 Go 标志:-tags dev -gcflags "all=-N -l"
  • 对于 wails build,将使用以下默认 Go 标志:-tags desktop,production -ldflags "-w -s"
    • 在 Windows 上,-ldflags "-w -h -H windowsgui"
  • 使用 -tags 传递给 CLI 的附加标签将添加到默认值中
  • 使用 -ldflags 传递给 CLI 的附加 ldflags 将添加到默认值中
  • 传递 -o 标志
  • 将使用 -compiler 指定的 Go 编译器进行编译

手动步骤

  • 对于开发版本,最小的命令是:go build -tags dev -gcflags "all=-N -l"
  • 对于生产版本,最小的命令是:go build -tags desktop,production -ldflags "-w -s -H windowsgui"
  • 确保您在与 .syso 文件相同的目录中进行编译

压缩应用程序

Wails CLI

  • 如果提供了 -upx 标志,则会运行 upx 程序以使用默认设置压缩应用程序
  • 如果还传递了 -upxflags,则会使用这些标志而不是默认标志

手动步骤

  • 手动运行 upx [flags] 来压缩应用程序。