-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
140 lines (120 loc) · 3.83 KB
/
Makefile
File metadata and controls
140 lines (120 loc) · 3.83 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
.PHONY: help install dev dev-backend dev-frontend build clean test check stop kill-backend kill-frontend fmt lint ci \
bin bin-cli bin-backend bin-all
# Binary output directory
BIN_DIR ?= ./bin
TARGET_DIR ?= ./target/release
# 默认目标:显示帮助信息
help:
@echo "StaticFlow 开发工具"
@echo ""
@echo "使用方法:"
@echo " make install - 安装所有依赖"
@echo " make dev - 一键启动前后端(推荐)"
@echo " make dev-backend - 仅启动后端(端口3000)"
@echo " make dev-frontend - 仅启动前端(端口8080)"
@echo " make build - 构建整个项目"
@echo " make check - 检查代码"
@echo " make test - 运行测试"
@echo " make clean - 清理构建产物"
@echo " make stop - 停止所有服务"
@echo ""
@echo "二进制构建:"
@echo " make bin-cli - 编译 CLI 二进制(sf-cli)"
@echo " make bin-backend - 编译后端二进制(static-flow-backend)"
@echo " make bin-all - 编译全部 Rust 二进制并导出到 ./bin"
@echo " make bin BIN=<name> - 编译指定 package 二进制并导出到 ./bin"
@echo " 例如:make bin BIN=sf-cli"
@echo ""
# 安装依赖
install:
@echo "🔧 安装依赖..."
@rustup target add wasm32-unknown-unknown
@cargo install trunk --locked || true
@cd frontend && npm install
@echo "✅ 依赖安装完成"
# 一键启动前后端
dev:
@echo "🚀 启动开发环境..."
@trap 'make stop' EXIT; \
$(MAKE) dev-backend & \
sleep 3; \
$(MAKE) dev-frontend & \
wait
# 启动后端
dev-backend:
@echo "🔧 启动后端(http://localhost:3000)..."
@cd backend && [ -f .env ] || cp .env.example .env
@cd backend && RUST_LOG=info cargo run
# 启动前端
dev-frontend:
@echo "🎨 启动前端(http://localhost:8080)..."
@cd frontend && trunk serve --open
# 构建项目
build:
@echo "📦 构建项目..."
@cargo build --workspace --release
@cd frontend && trunk build --release
@echo "✅ 构建完成"
# 检查代码
check:
@cargo check --workspace
# 运行测试
test:
@cargo test --workspace
# 清理
clean:
@cargo clean
@rm -rf frontend/dist
@rm -rf $(BIN_DIR)
# 停止服务
stop:
@echo "🛑 停止服务..."
@-pkill -INT -f "cargo run" 2>/dev/null || true
@-pkill -INT -f "trunk serve" 2>/dev/null || true
@sleep 1
@echo "✅ 已停止"
# 强制停止后端
kill-backend:
@-pkill -9 -f "static-flow-backend" 2>/dev/null || true
# 强制停止前端
kill-frontend:
@-pkill -9 -f "trunk serve" 2>/dev/null || true
# 格式化代码
fmt:
@cargo fmt --all
# Lint 检查
lint:
@cargo clippy --workspace -- -D warnings
# 完整检查
ci: fmt lint test check
@echo "✅ 所有检查通过"
# 编译指定 package 的 release binary,并导出到 ./bin
# 用法:make bin BIN=sf-cli
bin:
@if [ -z "$(BIN)" ]; then \
echo "❌ 缺少 BIN 参数,用法:make bin BIN=<name>"; \
echo " 示例:make bin BIN=sf-cli"; \
exit 1; \
fi
@echo "📦 编译 $(BIN) ..."
@cargo build -p $(BIN) --release
@mkdir -p $(BIN_DIR)
@cp $(TARGET_DIR)/$(BIN) $(BIN_DIR)/$(BIN)
@echo "✅ 输出: $(BIN_DIR)/$(BIN)"
# 编译 CLI binary
bin-cli:
@echo "📦 编译 sf-cli ..."
@cargo build -p sf-cli --release
@mkdir -p $(BIN_DIR)
@cp $(TARGET_DIR)/sf-cli $(BIN_DIR)/sf-cli
@echo "✅ 输出: $(BIN_DIR)/sf-cli"
# 编译 backend binary (release-backend profile: keeps symbols for memory profiler)
bin-backend:
@echo "📦 编译 static-flow-backend ..."
@cargo build -p static-flow-backend --profile release-backend
@mkdir -p $(BIN_DIR)
@cp ./target/release-backend/static-flow-backend $(BIN_DIR)/static-flow-backend
@echo "✅ 输出: $(BIN_DIR)/static-flow-backend"
# 编译所有 Rust binary
bin-all: bin-cli bin-backend
@echo "✅ 全部二进制已导出到 $(BIN_DIR)"