mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-15 07:05:50 +01:00
This commit represents a complete redesign of the Wails v3 documentation structure and includes all recent v3-alpha updates. ## Major Changes ### Documentation Restructure - Migrated from /learn to organized /features, /guides, /reference structure - Created new Quick Start section with installation and first app guides - Added comprehensive Concepts section explaining architecture and lifecycle - Reorganized Contributing section with detailed guides for different contribution types - Added complete API Reference with separate pages for each major component ### New Documentation - Custom URL Protocols guide with NSIS automatic registration - Windows Packaging guide with NSIS, MSI, and MSIX options - Typed Events system with TypeScript binding generation - Complete menu documentation (Application, Context, System Tray) - Comprehensive dialog documentation (File, Message, Custom) - Window management guides (Basics, Events, Frameless, Multiple Windows) - Bindings documentation (Services, Methods, Models, Best Practices) - New tutorials: Todo app and Notes app (vanilla JS) ### v3-alpha API Updates - Typed Events: RegisterEvent[T] with strict mode and binding generation - Custom Protocols: NSIS macros for automatic Windows protocol registration - System Tray: Windows Show/Hide now fully functional with tooltip limits - Window Hidden: Fixed white flash on Windows when creating hidden windows - Notifications: Corrected import path to pkg/services/notifications - Frontend Runtime: Events.Emit now returns Promise<boolean> for cancellation ### Documentation Improvements - Updated all code examples to use @wailsio/runtime imports - Added platform-specific event tables and examples - Created comprehensive event reference with use cases - Added security best practices and validation patterns - Improved code examples with real-world use cases - Added troubleshooting sections and common patterns ### Files - Created: 60+ new documentation pages - Deleted: Old /learn structure (13 files) - Modified: 15 existing files for v3-alpha compatibility - Added: Tutorial assets and showcase images
136 lines
3.7 KiB
Text
136 lines
3.7 KiB
Text
---
|
|
sidebar_position: 2
|
|
---
|
|
|
|
# Creating a Project
|
|
|
|
## Project Generation
|
|
|
|
Now that the CLI is installed, you can generate a new project by using the `wails init` command.
|
|
|
|
:::tip[Performance Tip for Windows 11 Users]
|
|
Consider using [Dev Drive](https://learn.microsoft.com/en-us/windows/dev-drive/) to store your projects. Dev Drives are optimized for developer workloads and can significantly improve build times and disk access speeds by up to 30% compared to regular NTFS drives.
|
|
:::
|
|
|
|
Pick your favourite framework:
|
|
|
|
```mdx-code-block
|
|
import Tabs from "@theme/Tabs";
|
|
import TabItem from "@theme/TabItem";
|
|
|
|
<Tabs
|
|
defaultValue="Svelte"
|
|
values={[
|
|
{label: "Svelte", value: "Svelte"},
|
|
{label: "React", value: "React"},
|
|
{label: "Vue", value: "Vue"},
|
|
{label: "Preact", value: "Preact"},
|
|
{label: "Lit", value: "Lit"},
|
|
{label: "Vanilla", value: "Vanilla"},
|
|
]}
|
|
>
|
|
<TabItem value="Svelte">
|
|
Generate a <a href={"https://svelte.dev/"}>Svelte</a> project using JavaScript with:<br/><br/>
|
|
|
|
wails init -n myproject -t svelte
|
|
|
|
If you would rather use TypeScript:<br/>
|
|
|
|
wails init -n myproject -t svelte-ts
|
|
|
|
</TabItem>
|
|
<TabItem value="React">
|
|
Generate a <a href={"https://reactjs.org/"}>React</a> project using JavaScript with:<br/><br/>
|
|
|
|
wails init -n myproject -t react
|
|
|
|
If you would rather use TypeScript:<br/>
|
|
|
|
wails init -n myproject -t react-ts
|
|
|
|
</TabItem>
|
|
<TabItem value="Vue">
|
|
Generate a <a href={"https://vuejs.org/"}>Vue</a> project using JavaScript with:<br/><br/>
|
|
|
|
wails init -n myproject -t vue
|
|
|
|
If you would rather use TypeScript:<br/>
|
|
|
|
wails init -n myproject -t vue-ts
|
|
|
|
</TabItem>
|
|
<TabItem value="Preact">
|
|
Generate a <a href={"https://preactjs.com/"}>Preact</a> project using JavaScript with:<br/><br/>
|
|
|
|
wails init -n myproject -t preact
|
|
|
|
If you would rather use TypeScript:<br/>
|
|
|
|
wails init -n myproject -t preact-ts
|
|
|
|
</TabItem>
|
|
<TabItem value="Lit">
|
|
Generate a <a href={"https://lit.dev/"}>Lit</a> project using JavaScript with:<br/><br/>
|
|
|
|
wails init -n myproject -t lit
|
|
|
|
If you would rather use TypeScript:<br/>
|
|
|
|
wails init -n myproject -t lit-ts
|
|
|
|
</TabItem>
|
|
<TabItem value="Vanilla">
|
|
Generate a Vanilla project using JavaScript with:<br/><br/>
|
|
|
|
wails init -n myproject -t vanilla
|
|
|
|
If you would rather use TypeScript:<br/>
|
|
|
|
wails init -n myproject -t vanilla-ts
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
```
|
|
|
|
<hr />
|
|
|
|
There are also [community templates](../community/templates.mdx) available that offer different capabilities and frameworks.
|
|
|
|
To see the other options available, you can run `wails init -help`.
|
|
More details can be found in the [CLI Reference](../reference/cli.mdx#init).
|
|
|
|
## Project Layout
|
|
|
|
Wails projects have the following layout:
|
|
|
|
```
|
|
.
|
|
├── build/
|
|
│ ├── appicon.png
|
|
│ ├── darwin/
|
|
│ └── windows/
|
|
├── frontend/
|
|
├── go.mod
|
|
├── go.sum
|
|
├── main.go
|
|
└── wails.json
|
|
```
|
|
|
|
### Project structure rundown
|
|
|
|
- `/main.go` - The main application
|
|
- `/frontend/` - Frontend project files
|
|
- `/build/` - Project build directory
|
|
- `/build/appicon.png` - The application icon
|
|
- `/build/darwin/` - Mac specific project files
|
|
- `/build/windows/` - Windows specific project files
|
|
- `/wails.json` - The project configuration
|
|
- `/go.mod` - Go module file
|
|
- `/go.sum` - Go module checksum file
|
|
|
|
The `frontend` directory has nothing specific to Wails and can be any frontend project of your choosing.
|
|
|
|
The `build` directory is used during the build process. These files may be updated to customise your builds. If
|
|
files are removed from the build directory, default versions will be regenerated.
|
|
|
|
The default module name in `go.mod` is "changeme". You should change this to something more appropriate.
|