297 lines
5.3 KiB
Text
297 lines
5.3 KiB
Text
---
|
|
title: Development Setup
|
|
description: Set up your development environment for Wails v3 development
|
|
---
|
|
|
|
## Development Environment Setup
|
|
|
|
This guide walks you through setting up a complete development environment for working on Wails v3.
|
|
|
|
## Required Tools
|
|
|
|
### Go Development
|
|
|
|
1. **Install Go 1.25 or later:**
|
|
```bash
|
|
# Download from https://go.dev/dl/
|
|
go version # Verify installation
|
|
```
|
|
|
|
2. **Configure Go environment:**
|
|
```bash
|
|
# Add to your shell profile (.bashrc, .zshrc, etc.)
|
|
export GOPATH=$HOME/go
|
|
export PATH=$PATH:$GOPATH/bin
|
|
```
|
|
|
|
3. **Install useful Go tools:**
|
|
```bash
|
|
go install golang.org/x/tools/cmd/goimports@latest
|
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
```
|
|
|
|
### Node.js and npm
|
|
|
|
Required for building documentation and testing frontend integrations.
|
|
|
|
```bash
|
|
# Install Node.js 20+ and npm
|
|
node --version # Should be 20+
|
|
npm --version
|
|
```
|
|
|
|
### Platform-Specific Dependencies
|
|
|
|
**macOS:**
|
|
|
|
```bash
|
|
# Install Xcode Command Line Tools
|
|
xcode-select --install
|
|
|
|
# Verify installation
|
|
xcode-select -p # Should output a path
|
|
```
|
|
|
|
**Windows:**
|
|
|
|
1. Install [MSYS2](https://www.msys2.org/) for a Unix-like environment
|
|
2. WebView2 Runtime (pre-installed on Windows 11, [download](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) for Windows 10)
|
|
3. Optional: Install [Git for Windows](https://git-scm.com/download/win)
|
|
|
|
**Linux (Debian/Ubuntu):**
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.0-dev
|
|
```
|
|
|
|
**Linux (Fedora/RHEL):**
|
|
|
|
```bash
|
|
sudo dnf install gcc pkg-config gtk3-devel webkit2gtk3-devel
|
|
```
|
|
|
|
**Linux (Arch):**
|
|
|
|
```bash
|
|
sudo pacman -S base-devel gtk3 webkit2gtk
|
|
```
|
|
|
|
## Repository Setup
|
|
|
|
### Clone and Configure
|
|
|
|
```bash
|
|
# Clone your fork
|
|
git clone https://github.com/YOUR_USERNAME/wails.git
|
|
cd wails
|
|
|
|
# Add upstream remote
|
|
git remote add upstream https://github.com/wailsapp/wails.git
|
|
|
|
# Verify remotes
|
|
git remote -v
|
|
```
|
|
|
|
### Build the Wails CLI
|
|
|
|
```bash
|
|
# Navigate to v3 directory
|
|
cd v3
|
|
|
|
# Build the CLI
|
|
go build -o ../wails3 ./cmd/wails3
|
|
|
|
# Test the build
|
|
cd ..
|
|
./wails3 version
|
|
```
|
|
|
|
### Add to PATH (Optional)
|
|
|
|
**Linux/macOS:**
|
|
|
|
```bash
|
|
# Add to ~/.bashrc or ~/.zshrc
|
|
export PATH=$PATH:/path/to/wails
|
|
```
|
|
|
|
**Windows:**
|
|
|
|
Add the Wails directory to your PATH environment variable through System Properties.
|
|
|
|
## IDE Setup
|
|
|
|
### VS Code (Recommended)
|
|
|
|
1. **Install VS Code:** [Download](https://code.visualstudio.com/)
|
|
|
|
2. **Install extensions:**
|
|
- Go (by Go Team at Google)
|
|
- ESLint
|
|
- Prettier
|
|
- MDX (for documentation)
|
|
|
|
3. **Configure workspace settings** (`.vscode/settings.json`):
|
|
```json
|
|
{
|
|
"go.useLanguageServer": true,
|
|
"go.lintTool": "golangci-lint",
|
|
"go.lintOnSave": "workspace",
|
|
"editor.formatOnSave": true,
|
|
"go.formatTool": "goimports"
|
|
}
|
|
```
|
|
|
|
### GoLand
|
|
|
|
1. **Install GoLand:** [Download](https://www.jetbrains.com/go/)
|
|
|
|
2. **Configure:**
|
|
- Enable Go modules support
|
|
- Set up file watchers for `goimports`
|
|
- Configure code style to match project conventions
|
|
|
|
## Verify Your Setup
|
|
|
|
Run these commands to verify everything is working:
|
|
|
|
```bash
|
|
# Go version check
|
|
go version
|
|
|
|
# Build Wails
|
|
cd v3
|
|
go build ./cmd/wails3
|
|
|
|
# Run tests
|
|
go test ./pkg/...
|
|
|
|
# Create a test app
|
|
cd ..
|
|
./wails3 init -n mytest -t vanilla
|
|
cd mytest
|
|
../wails3 dev
|
|
```
|
|
|
|
If the test app builds and runs, your environment is ready!
|
|
|
|
## Running Tests
|
|
|
|
### Unit Tests
|
|
|
|
```bash
|
|
cd v3
|
|
go test ./...
|
|
```
|
|
|
|
### Specific Package Tests
|
|
|
|
```bash
|
|
go test ./pkg/application
|
|
go test ./pkg/events -v # Verbose output
|
|
```
|
|
|
|
### Run with Coverage
|
|
|
|
```bash
|
|
go test ./... -coverprofile=coverage.out
|
|
go tool cover -html=coverage.out
|
|
```
|
|
|
|
### Run with Race Detector
|
|
|
|
```bash
|
|
go test ./... -race
|
|
```
|
|
|
|
## Working with Documentation
|
|
|
|
The Wails documentation is built with Astro and Starlight.
|
|
|
|
```bash
|
|
cd docs
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Start dev server
|
|
npm run dev
|
|
|
|
# Build for production
|
|
npm run build
|
|
```
|
|
|
|
Documentation will be available at `http://localhost:4321/`
|
|
|
|
## Debugging
|
|
|
|
### Debugging Go Code
|
|
|
|
**VS Code:**
|
|
|
|
Create `.vscode/launch.json`:
|
|
|
|
```json
|
|
{
|
|
"version": "0.2.0",
|
|
"configurations": [
|
|
{
|
|
"name": "Debug Wails CLI",
|
|
"type": "go",
|
|
"request": "launch",
|
|
"mode": "debug",
|
|
"program": "${workspaceFolder}/v3/cmd/wails3",
|
|
"args": ["dev"]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Command Line:**
|
|
|
|
```bash
|
|
# Use Delve debugger
|
|
go install github.com/go-delve/delve/cmd/dlv@latest
|
|
dlv debug ./cmd/wails3 -- dev
|
|
```
|
|
|
|
### Debugging Platform Code
|
|
|
|
Platform-specific debugging requires platform tools:
|
|
|
|
- **macOS:** Xcode Instruments
|
|
- **Windows:** Visual Studio Debugger
|
|
- **Linux:** GDB
|
|
|
|
## Common Issues
|
|
|
|
### "command not found: wails3"
|
|
|
|
Add the Wails directory to your PATH or use `./wails3` from the project root.
|
|
|
|
### "webkit2gtk not found" (Linux)
|
|
|
|
Install WebKit2GTK development packages:
|
|
|
|
```bash
|
|
sudo apt install libwebkit2gtk-4.0-dev # Debian/Ubuntu
|
|
```
|
|
|
|
### Build fails with Go module errors
|
|
|
|
```bash
|
|
cd v3
|
|
go mod tidy
|
|
go mod download
|
|
```
|
|
|
|
### "CGO_ENABLED" errors on Windows
|
|
|
|
Ensure you have a C compiler (MinGW-w64 via MSYS2) in your PATH.
|
|
|
|
## Next Steps
|
|
|
|
- Review [Coding Standards](/contributing/standards)
|
|
- Explore the [Technical Documentation](/contributing)
|
|
- Find an issue to work on: [Good First Issues](https://github.com/wailsapp/wails/labels/good%20first%20issue)
|