From f4de49681d406371e7992f5f6796878ad5a02676 Mon Sep 17 00:00:00 2001 From: Flik Date: Fri, 2 Jan 2026 13:10:36 +0800 Subject: [PATCH] update --- .gitignore | 5 ++++ Makefile | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index c1cb7a3..2ca0907 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,8 @@ build/** # 配置文件 (包含敏感信息) server.yaml client.yaml + +# 临时文件 +*.tmp +*.temp +.claude/* \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9a43196 --- /dev/null +++ b/Makefile @@ -0,0 +1,88 @@ +# GoTunnel Makefile + +.PHONY: all build-frontend sync-frontend build-server build-client clean help + +# 默认目标 +all: build-frontend sync-frontend build-server build-client + +# 构建前端 +build-frontend: + @echo "Building frontend..." + cd web && npm ci && npm run build + +# 同步前端到 embed 目录 +sync-frontend: + @echo "Syncing frontend to embed directory..." +ifeq ($(OS),Windows_NT) + if exist internal\server\app\dist rmdir /s /q internal\server\app\dist + xcopy /E /I /Y web\dist internal\server\app\dist +else + rm -rf internal/server/app/dist + cp -r web/dist internal/server/app/dist +endif + +# 仅同步(不重新构建前端) +sync-only: + @echo "Syncing existing frontend build..." +ifeq ($(OS),Windows_NT) + if exist internal\server\app\dist rmdir /s /q internal\server\app\dist + xcopy /E /I /Y web\dist internal\server\app\dist +else + rm -rf internal/server/app/dist + cp -r web/dist internal/server/app/dist +endif + +# 构建服务端(当前平台) +build-server: + @echo "Building server..." + go build -ldflags="-s -w" -o gotunnel-server ./cmd/server + +# 构建客户端(当前平台) +build-client: + @echo "Building client..." + go build -ldflags="-s -w" -o gotunnel-client ./cmd/client + +# 构建 Linux ARM64 服务端 +build-server-linux-arm64: sync-only + @echo "Building server for Linux ARM64..." + GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags="-s -w" -o gotunnel-server-linux-arm64 ./cmd/server + +# 构建 Linux AMD64 服务端 +build-server-linux-amd64: sync-only + @echo "Building server for Linux AMD64..." + GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o gotunnel-server-linux-amd64 ./cmd/server + +# 完整构建(包含前端) +full-build: build-frontend sync-frontend build-server build-client + +# 开发模式:快速构建(假设前端已构建) +dev-build: sync-only build-server + +# 清理构建产物 +clean: + @echo "Cleaning..." +ifeq ($(OS),Windows_NT) + if exist gotunnel-server del gotunnel-server + if exist gotunnel-client del gotunnel-client + if exist gotunnel-server.exe del gotunnel-server.exe + if exist gotunnel-client.exe del gotunnel-client.exe + if exist gotunnel-server-* del gotunnel-server-* + if exist gotunnel-client-* del gotunnel-client-* +else + rm -f gotunnel-server gotunnel-client gotunnel-server-* gotunnel-client-* +endif + +# 帮助 +help: + @echo "Available targets:" + @echo " all - Build frontend, sync, and build binaries" + @echo " build-frontend - Build frontend (npm)" + @echo " sync-frontend - Sync web/dist to internal/server/app/dist" + @echo " sync-only - Sync without rebuilding frontend" + @echo " build-server - Build server for current platform" + @echo " build-client - Build client for current platform" + @echo " build-server-linux-arm64 - Cross-compile server for Linux ARM64" + @echo " build-server-linux-amd64 - Cross-compile server for Linux AMD64" + @echo " full-build - Complete build with frontend" + @echo " dev-build - Quick build (assumes frontend exists)" + @echo " clean - Remove build artifacts"