-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
98 lines (82 loc) · 3.19 KB
/
Copy pathMakefile
File metadata and controls
98 lines (82 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
.PHONY: all install backend frontend run dev test build clean release fnpack docker help
all: install build
ARGS ?=
install:
cd backend && go mod tidy
cd frontend && npm install
backend:
cd backend && go build -o sqlite-manager .
frontend:
cd frontend && npm run build
build: backend frontend
rm -rf backend/public
mkdir -p backend/public/sqlite-web backend/public/img
cp frontend/dist/index.html backend/public/
cp -r frontend/dist/sqlite-web/* backend/public/sqlite-web/
cp -r frontend/public/img/* backend/public/img/ 2>/dev/null || true
run: build
cd backend && ./sqlite-manager $(ARGS)
TEST_DIR ?= test
TEST_PORT ?= 8903
# 生产预览:在根目录的 test/ 中复刻线上打包结构(二进制 + public 前端 + 运行时 data),
# 单进程启动,和线上一致。启动前自动停止占用端口的旧进程。test/ 已加入 .gitignore。
test: backend frontend
@echo "============================================"
@echo " 生产预览(单进程,和线上一致)"
@echo "============================================"
@echo "🛑 停止占用端口 $(TEST_PORT) 的进程..."
@-lsof -ti tcp:$(TEST_PORT) | xargs kill 2>/dev/null || true
@echo "📦 组装 $(TEST_DIR)/ 目录(同线上打包结构)..."
rm -rf $(TEST_DIR)
mkdir -p $(TEST_DIR)/public/sqlite-web $(TEST_DIR)/public/img
cp backend/sqlite-manager $(TEST_DIR)/
cp frontend/dist/index.html $(TEST_DIR)/public/
cp -r frontend/dist/sqlite-web/* $(TEST_DIR)/public/sqlite-web/
cp -r frontend/public/img/* $(TEST_DIR)/public/img/ 2>/dev/null || true
@echo "🚀 启动: http://localhost:$(TEST_PORT) (数据目录: $(TEST_DIR)/data)"
@echo "============================================"
cd $(TEST_DIR) && ./sqlite-manager -no-browser -port $(TEST_PORT) $(ARGS)
dev: backend
@echo "============================================"
@echo " 开发模式启动"
@echo "============================================"
@echo "后端 API: http://localhost:8903"
@echo "前端页面: http://localhost:5173"
@echo "============================================"
@echo ""
@echo "按 Ctrl+C 停止所有服务"
@echo ""
@trap 'kill $$BACKEND_PID $$FRONTEND_PID 2>/dev/null; exit' INT; \
cd backend && ./sqlite-manager -no-browser $(ARGS) & BACKEND_PID=$$!; \
sleep 1; \
cd frontend && npm run dev & FRONTEND_PID=$$!; \
wait
release:
./build.sh
platforms:
./scripts/build-all.sh
fnpack:
./scripts/build-fnpack.sh
docker:
./scripts/build-docker.sh
help:
@echo "用法:"
@echo " make build 构建项目 (本地运行)"
@echo " make run 运行应用"
@echo " make dev 开发模式 (前后端双进程, 前端热更新)"
@echo " make test 生产预览 (在 test/ 复刻线上结构, 单进程启动, 自动停占用端口)"
@echo ""
@echo " make release 一键打包所有 (平台+飞牛+Docker)"
@echo " make platforms 只打包各平台"
@echo " make fnpack 只打包飞牛应用"
@echo " make docker 构建 Docker 多平台镜像"
@echo ""
@echo " make clean 清理构建文件"
clean:
rm -rf backend/sqlite-manager
rm -rf backend/public
rm -rf backend/data
rm -rf frontend/dist
rm -rf frontend/node_modules
rm -rf release
cd backend && go clean