|
| 1 | +# ============================================================================ |
| 2 | +# Vanblog 根 Makefile — 统一的开发/构建入口 |
| 3 | +# |
| 4 | +# 用法: |
| 5 | +# make help 显示此帮助 |
| 6 | +# make dev-go 运行 Go 后端 (开发模式) |
| 7 | +# make dev-astro 启动 Astro 前端开发服务器 |
| 8 | +# make dev 同时启动前后端开发模式 |
| 9 | +# make build 构建所有产物 (models → Go → Astro) |
| 10 | +# make test 运行所有测试 |
| 11 | +# make vet 运行 Go 静态分析 |
| 12 | +# make docker 构建生产 Docker 镜像 |
| 13 | +# make clean 清理构建产物 |
| 14 | +# |
| 15 | +# 不覆盖现有的工具链: |
| 16 | +# - vault/Makefile → Go 构建细节委托给 $(MAKE) -C vault |
| 17 | +# - vanblog.sh → 部署/运维脚本, 保持独立 |
| 18 | +# - pnpm scripts → 前端构建保持原样 |
| 19 | +# ============================================================================ |
| 20 | + |
| 21 | +# Source files that feed into models.js (triggers incremental rebuild) |
| 22 | +MODEL_SOURCES := $(wildcard sdk/src/models/*.ts) |
| 23 | + |
| 24 | +.PHONY: help dev dev-go dev-astro build build-go build-astro test vet docker clean |
| 25 | +# build-models is NOT in .PHONY — it tracks models.js freshness via its prerequisites. |
| 26 | + |
| 27 | +# --- Help --- |
| 28 | + |
| 29 | +help: |
| 30 | + @echo "Usage: make <target>" |
| 31 | + @echo "" |
| 32 | + @echo " dev Run both frontend (Astro) and backend (Go) in dev mode" |
| 33 | + @echo " dev-go Run Go backend locally (builds models.js first if missing)" |
| 34 | + @echo " dev-astro Start Astro dev server (pnpm dev)" |
| 35 | + @echo " build Build all artifacts (models → Go binary → Astro)" |
| 36 | + @echo " test Run all tests (Go tests + model type/fixture tests)" |
| 37 | + @echo " vet Run go vet ./..." |
| 38 | + @echo " docker Build production Docker image (docker buildx)" |
| 39 | + @echo " clean Remove all build artifacts" |
| 40 | + |
| 41 | +# --- Development --- |
| 42 | + |
| 43 | +# Generate core schema artifact (incremental — only when sources change) |
| 44 | +runtime/core-schema/models.js: $(MODEL_SOURCES) |
| 45 | + pnpm build:models |
| 46 | + |
| 47 | +# Run Go backend in dev mode |
| 48 | +dev-go: runtime/core-schema/models.js |
| 49 | + cd vault && go run . --dev --coreSchemaPath ../runtime/core-schema/models.js |
| 50 | + |
| 51 | +# Start Astro dev server |
| 52 | +dev-astro: |
| 53 | + pnpm dev |
| 54 | + |
| 55 | +# Run both in parallel (requires two terminals recommended; this uses background) |
| 56 | +dev: dev-astro |
| 57 | + @echo "" |
| 58 | + @echo "ℹ Next: open another terminal and run 'make dev-go' to start the Go backend." |
| 59 | + @echo " Astro dev server is running at http://localhost:4321" |
| 60 | + |
| 61 | +# --- Build (production) --- |
| 62 | + |
| 63 | +build-models: runtime/core-schema/models.js |
| 64 | + @# models.js is up to date |
| 65 | + |
| 66 | +build-go: build-models |
| 67 | + $(MAKE) -C vault build |
| 68 | + |
| 69 | +build-astro: |
| 70 | + pnpm --filter vanblog-app build |
| 71 | + |
| 72 | +# Full production build |
| 73 | +build: build-models build-go build-astro |
| 74 | + @echo "✓ Build complete" |
| 75 | + |
| 76 | +# --- Validation --- |
| 77 | + |
| 78 | +test: |
| 79 | + cd vault && go test ./... -count=1 |
| 80 | + pnpm test:models:types |
| 81 | + pnpm test:models:fixtures |
| 82 | + |
| 83 | +vet: |
| 84 | + cd vault && go vet ./... |
| 85 | + |
| 86 | +# --- Docker --- |
| 87 | + |
| 88 | +docker: |
| 89 | + docker build --target prod -t vanblog:prod . |
| 90 | + |
| 91 | +# --- Clean --- |
| 92 | + |
| 93 | +clean: |
| 94 | + $(MAKE) -C vault clean |
| 95 | + rm -rf app/dist/ |
| 96 | + rm -rf sdk/dist/ |
| 97 | + rm -rf runtime/core-schema/ |
0 commit comments