跳到主要内容

Wails 入门

· 阅读需 6 分钟
ahKevinXy

Wails 入门

支持平台

  • Windows 10/11 AMD64/ARM64
  • MacOS 10.13+ AMD64
  • MacOS 11.0+ ARM64
  • Linux AMD64/ARM64

依赖

  • Go 1.18+
  • NPM (Node 15+)

安装

go install github.com/wailsapp/wails/v2/cmd/wails@latest

创建项目

  • Svelte
wails init -n myproject -t svelte
wails init -n myproject -t svelte-ts
  • React
wails init -n myproject -t react
wails init -n myproject -t react-ts
  • Vue
wails init -n myproject -t vue
wails init -n myproject -t vue-ts
  • Preact
wails init -n myproject -t preact
wails init -n myproject -t preact-ts
  • lit
wails init -n myproject -t lit
wails init -n myproject -t lit-ts
  • Vanilla
wails init -n myproject -t vanilla
wails init -n myproject -t vanilla-ts

项目结构

.
├── build/
│ ├── appicon.png
│ ├── darwin/
│ └── windows/
├── frontend/
├── go.mod
├── go.sum
├── main.go
└── wails.json

目录概要

  • /main.go - 主应用
  • /frontend/ - 前端项目文件
  • /build/ - 项目构建目录
  • /build/appicon.png - 应用程序图标
  • /build/darwin/ - Mac 特定的项目文件
  • /build/windows/ - Windows 特定的项目文件
  • /wails.json - 项目配置
  • /go.mod - Go module 文件
  • /go.sum - Go module 校验文件

配置文件

{
// 项目配置版本
"version": "",
// 项目名称
"name": "",
// 包含编译资产的目录的相对路径,这通常是推断的并且可以留空
"assetdir": "",
// 触发重新加载的附加目录(逗号分隔),这仅用于某些高级资产配置
"reloaddirs": "",
// 构建文件所在的目录。默认为“build”
"build:dir": "",
// 前端目录的相对路径。默认为“frontend”
"frontend:dir": "",
// 安装 Node 依赖的命令,在前端目录运行 - 通常是`npm install`
"frontend:install": "",
// 构建资产的命令,在前端目录中运行 - 通常是 `npm run build`
"frontend:build": "",
// 此命令已被 frontend:dev:build 取代。如果未指定 frontend:dev:build 将回退到此命令。
// 如果此命令也未指定,将回退到 frontend:build
"frontend:dev": "",
// 此命令是 frontend:build 的 dev 等价物。
// 如果未指定回退到 frontend:dev
"frontend:dev:build": "",
// 此命令是 frontend:install 的 dev 等价物。如果未指定回退到 frontend:install
"frontend:dev:install": "",
// 此命令在 `wails dev`上的单独进程中运行。用于第 3 方观察者或启动 3d 方开发服务器
"frontend:dev:watcher": "",
// 用于服务资产的第 3 方开发服务器的 URL,比如 Vite。
// 如果设置为 'auto' 那么 devServerUrl 将从 Vite 输出中推断出来
"frontend:dev:serverUrl": "",
// 创建自动生成的 JS 模块的目录的相对路径
"wailsjsdir": "",
// 二进制文件的名称
"outputfilename": "",
// 开发服务器在检测到资产更改时等待重新加载的默认时间
"debounceMS": 100,
// 将 wails 开发服务器绑定到的地址。默认为:localhost:34115
"devServer": "",
// 在开发模式下以 shell 样式传递给应用程序的参数
"appargs": "",
// 定义是否应该运行构建 Hooks,尽管它们是为主机操作系统以外的操作系统定义的。
"runNonNativeBuildHooks": false,
// 构建前 Hooks
"preBuildHooks": {
// 在构建指定的 GOOS/GOARCH 之前将执行的命令:${platform} 被替换为“GOOS/GOARCH”。
// “GOOS/GOARCH” hook 在“GOOS/*”和“*/*” hook 之前执行。
"GOOS/GOARCH": "",
// 在指定 GOOS 的构建之前将执行的命令:${platform} 被替换为“GOOS/GOARCH”。
// “GOOS/*” hook 在“*/*” hook 之前执行。
"GOOS/*": "",
// 将在每次构建之前执行的命令:${platform} 替换为“GOOS/GOARCH”。
"*/*": ""
},
// 构建后 Hooks
"postBuildHooks": {
// 在构建指定的 GOOS/GOARCH 之后将执行的命令:${platform} 替换为“GOOS/GOARCH”,
// ${bin} 替换为已编译二进制文件的路径。 “GOOS/GOARCH” hook 在“GOOS/*”和“*/*” hook 之前执行。
"GOOS/GOARCH": "",
// 在构建指定的 GOOS 之后将执行的命令:${platform} 替换为“GOOS/GOARCH”,
// ${bin} 替换为已编译二进制文件的路径。 “GOOS/*” hook 在“*/*” hook 之前执行。
"GOOS/*": "",
// 每次构建后将执行的命令:${platform} 替换为“GOOS/GOARCH”,
// ${bin} 替换为已编译二进制文件的路径。
"*/*": ""
},
// 用于填充 manifest 和版本信息的数据。
"info": {
// 公司名称。 默认值:[项目名]
"companyName": "",
// 产品名称。 默认值:[项目名]
"productName": "",
// 产品版本。默认值:'1.0.0'
"productVersion": "",
// 产品的版权。默认值:'Copyright.........'
"copyright": "",
// 该应用程序的简短评论。默认值:'Built using Wails (https://wails.app)'
"comments": ""
},
// 'multiple': 每个架构一个安装程序。
// 'single': 适用于正在构建的所有体系结构的单一通用安装程序。
// 默认值:'multiple'
"nsisType": "",
// 应用程序是否应该被混淆。默认值:false
"obfuscated": "",
// 使用 obfuscated 标志时传递给乱码命令的参数
"garbleargs": ""
}