Files
wk-backend/Taskfile.yml

157 lines
3.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
version: "3"
vars:
FRONTEND_DIR: web/frontend
BIN_DIR: bin
SERVER_NAME: server
# --- 全局 Git 信息 (关键修复:放这里才能被所有子任务读取) ---
GIT_AUTHOR: zhilv666
GIT_EMAIL: zhilv666@qq.com
VERSION:
sh: git describe --tags --always --dirty 2>/dev/null || echo "dev"
BUILD_TIME:
sh: date '+%Y-%m-%d %H:%M:%S'
GIT_COMMIT:
sh: git rev-parse --short HEAD 2>/dev/null || echo "unknown"
# --- 全局注入参数 (关键修复) ---
LDFLAGS: >-
-s -w
-X "ckwk/internal/conf.Version={{.VERSION}}"
-X "ckwk/internal/conf.BuildAt={{.BUILD_TIME}}"
-X "ckwk/internal/conf.GitAuthor={{.GIT_AUTHOR}}"
-X "ckwk/internal/conf.GitEmail={{.GIT_EMAIL}}"
-X "ckwk/internal/conf.GitCommit={{.GIT_COMMIT}}"
tasks:
# ======================
# 🔁 Git / Submodule
# ======================
fe:sync:
desc: 同步前端 submodule 🔁
cmds:
- git submodule update --init --recursive {{.FRONTEND_DIR}}
fe:update:
desc: 拉取前端 submodule 最新提交 ⬆️
cmds:
- git submodule update --init --remote --recursive {{.FRONTEND_DIR}}
# ======================
# 🎨 前端
# ======================
fe:install:
desc: 安装前端依赖 📦
deps: [fe:sync]
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm install
fe:dev:
desc: 启动前端开发服务器 🚀
deps: [fe:sync]
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm dev
fe:build:
desc: 构建前端 🏗️
deps: [fe:sync]
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm build
fe:clean:
desc: 清理前端构建产物 🧹
dir: "{{.FRONTEND_DIR}}"
cmds:
- rm -rf dist
# ======================
# ⚙️ 后端
# ======================
be:run:
desc: 启动后端服务 🧠
cmds:
- go run ./cmd
be:build:
desc: 构建后端二进制 🔨
cmds:
- mkdir -p {{.BIN_DIR}}
- go build -o {{.BIN_DIR}}/{{.SERVER_NAME}} ./cmd
# ======================
# 🔄 开发 / 构建流程
# ======================
dev:
desc: 同时启动前后端(开发模式)🔥
cmds:
- task fe:dev &
- task be:run
dev:be:
desc: 只启动后端(配合前端 dev
cmds:
- go run ./cmd
build:
desc: 构建前端 + 后端 📦
cmds:
- task fe:build
- task be:build
rebuild:
desc: 清理并重建 🔁
cmds:
- task fe:clean
- task build
# ======================
# 🚀 生产构建
# ======================
release:
desc: 构建多平台二进制 🌍
vars:
MODE: -X "ckwk/internal/conf.Mode=release"
cmds:
- task fe:build
- mkdir -p {{.BIN_DIR}}
# 🐧 Linux
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags '{{.LDFLAGS}} {{.MODE}}' -o {{.BIN_DIR}}/{{.SERVER_NAME}}-linux-amd64 ./cmd
# 🪟 Windows
- CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags '{{.LDFLAGS}} {{.MODE}}' -o {{.BIN_DIR}}/{{.SERVER_NAME}}-windows-amd64.exe ./cmd
# --- 压缩任务 (优化版) ---
upx:
desc: "压缩二进制文件 (智能跳过 macOS 和 Windows ARM)"
cmds:
- echo "* 开始压缩处理..."
- |
if ! command -v upx > /dev/null 2>&1; then
echo "⚠️ 未找到 UPX跳过压缩。"
exit 0
fi
for file in {{.BIN_DIR}}/*; do
[ -f "$file" ] || continue
if [[ "$file" == *"darwin"* ]]; then
echo "* [SKIP] 跳过 macOS: $(basename $file)"
elif [[ "$file" == *"windows_arm"* ]]; then
echo "* [SKIP] 跳过 Win ARM: $(basename $file)"
else
echo "* [UPX] 压缩: $(basename $file)"
upx --best --lzma "$file" >/dev/null 2>&1 || echo " ⚠️ 失败: $file"
fi
done
silent: true