version: '3' tasks: go:mod:tidy: summary: Runs `go mod tidy` internal: true cmds: - go mod tidy install:frontend:deps: summary: Install frontend dependencies dir: frontend sources: - package.json - package-lock.json generates: - node_modules/* preconditions: - sh: npm version msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/" cmds: - npm install build:frontend: label: build:frontend (PRODUCTION={{.PRODUCTION}}) summary: Build the frontend project dir: frontend sources: - "**/*" generates: - dist/**/* deps: - task: install:frontend:deps - task: generate:bindings vars: BUILD_FLAGS: ref: .BUILD_FLAGS cmds: - npm run {{.BUILD_COMMAND}} -q env: PRODUCTION: '{{.PRODUCTION | default "false"}}' vars: BUILD_COMMAND: '{{if eq .PRODUCTION "true"}}build{{else}}build:dev{{end}}' generate:bindings: label: generate:bindings (BUILD_FLAGS={{.BUILD_FLAGS}}) summary: Generates bindings for the frontend deps: - task: go:mod:tidy sources: - "**/*.[jt]s" - exclude: frontend/**/* - frontend/bindings/**/* # Rerun when switching between dev/production mode causes changes in output - "**/*.go" - go.mod - go.sum generates: - frontend/bindings/**/* cmds: - wails3 generate bindings -f '{{.BUILD_FLAGS}}' -clean=true -ts generate:icons: summary: Generates Windows `.ico` and Mac `.icns` files from an image dir: build sources: - "appicon.png" generates: - "darwin/icons.icns" - "windows/icon.ico" cmds: - wails3 generate icons -input appicon.png -macfilename darwin/icons.icns -windowsfilename windows/icon.ico dev:frontend: summary: Runs the frontend in development mode dir: frontend deps: - task: install:frontend:deps cmds: - npm run dev -- --port {{.VITE_PORT}} --strictPort update:build-assets: summary: Updates the build assets dir: build cmds: - wails3 update build-assets -name "{{.APP_NAME}}" -binaryname "{{.APP_NAME}}" -config config.yml -dir .