Jelajahi Sumber

build: 固化 API 产物位置约定(make build → bin/api/go-backend(.exe))

- 新增 Makefile:build/clean/test/vet 四目标;产物固定 bin/api/,
  Windows 下命名 go-backend.exe(go env GOOS 判定后缀,跨平台不写死)
- bin/ 整目录已被 .gitignore 忽略(确认 bin/api/go-backend.exe 不入 git)
- README §4 补 API 生成物位置约定表 + make build/clean 用法
- 本机实测:go 1.27.3 + MinGW64 make 4.4.1,-o 不带 .exe 不自动补后缀,故显式全名
Q 3 hari lalu
induk
melakukan
6273b0dd2d
2 mengubah file dengan 60 tambahan dan 0 penghapusan
  1. 43 0
      Makefile
  2. 17 0
      README.md

+ 43 - 0
Makefile

@@ -0,0 +1,43 @@
+# =============================================================================
+# 统一 Go 后端 · 构建入口(ADR-011 单二进制 / ADR-015 部署形态)
+#
+# 产物位置约定(2026-11-06 用户拍板):
+#   · API 生成物固定输出到  bin/api/ 目录
+#   · Windows 下固定命名    go-backend.exe(非 Windows 为 go-backend)
+#   · bin/ 整目录已被 .gitignore 忽略(不入库)
+#
+# 常用目标:
+#   make build   编译 cmd/api → bin/api/go-backend(.exe)
+#   make clean   清除 bin/ 构建产物
+#   make test    跑全量单测(域模块就绪后启用)
+#   make vet     静态检查
+# =============================================================================
+
+# 产物后缀按当前 Go 目标平台判定(windows → .exe,其余无后缀)
+GOOS ?= $(shell go env GOOS)
+ifeq ($(GOOS),windows)
+BINEXT := .exe
+else
+BINEXT :=
+endif
+
+BIN_DIR := bin/api
+BIN     := $(BIN_DIR)/go-backend$(BINEXT)
+
+.PHONY: build
+build:
+	@mkdir -p $(BIN_DIR)
+	@go build -o $(BIN) ./cmd/api
+	@echo "build ok -> $(BIN)"
+
+.PHONY: clean
+clean:
+	@rm -rf bin
+
+.PHONY: test
+test:
+	go test ./...
+
+.PHONY: vet
+vet:
+	go vet ./...

+ 17 - 0
README.md

@@ -183,6 +183,23 @@ go vet   ./...    # 0 告警(1.27 起 go vet/go test 默认含 stdversion 检
 go test  ./...    # 测试(域模块就绪后启用)
 ```
 
+**API 生成物位置约定(2026-11-06 拍板,经 `Makefile` 固化)**:
+
+| 项 | 约定 |
+|---|---|
+| 产物目录 | `bin/api/`(固定,不随工作目录漂移) |
+| 产物名 | Windows 下 `go-backend.exe`;非 Windows 为 `go-backend`(按 `go env GOOS` 判定) |
+| git 忽略 | `bin/` 整目录已在 `.gitignore`(不入库) |
+| 构建命令 | `make build` → `bin/api/go-backend(.exe)`;`make clean` 清产物;`make test` / `make vet` |
+
+```bash
+make build    # → bin/api/go-backend.exe(Windows)
+make clean    # 删 bin/
+```
+
+> `Makefile` 用 `$(shell go env GOOS)` 判定产物后缀,跨平台不写死 `.exe`;
+> 本机实测(go 1.27.3 / MinGW64 make 4.4.1)`-o` 目标不带 `.exe` 时不会自动补后缀,故显式写全名最稳。
+
 **依赖版本锁定**(`go.mod`,2026-11-05 实测无意外升级):
 `fiber/v2 v2.52.16` / `gorm v1.31.2` / `validator/v10 v10.27.0` /
 `golang-jwt/jwt/v5 v5.3.1` / `oklog/ulid v1.3.1` / `x/crypto v0.33.0` / `zap v1.28.0`。