feat: 完成前后端打包
This commit is contained in:
139
Taskfile.yml
Normal file
139
Taskfile.yml
Normal file
@@ -0,0 +1,139 @@
|
||||
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:
|
||||
# ======================
|
||||
# 🎨 前端
|
||||
# ======================
|
||||
|
||||
fe:install:
|
||||
desc: 安装前端依赖 📦
|
||||
dir: "{{.FRONTEND_DIR}}"
|
||||
cmds:
|
||||
- pnpm install
|
||||
|
||||
fe:dev:
|
||||
desc: 启动前端开发服务器 🚀
|
||||
dir: "{{.FRONTEND_DIR}}"
|
||||
cmds:
|
||||
- pnpm dev
|
||||
|
||||
fe:build:
|
||||
desc: 构建前端 🏗️
|
||||
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
|
||||
Reference in New Issue
Block a user