54 lines
1.6 KiB
Makefile
54 lines
1.6 KiB
Makefile
# Pure Note 构建与运维入口
|
||
#
|
||
# 常用目标:
|
||
# make web 构建前端(npm ci + vite build → web/dist)
|
||
# make sync-assets 拷贝 web/dist → internal/webui/dist(go:embed 约束,§8.3-1)
|
||
# make build 全量构建(前端 + 单二进制 pn)
|
||
# make linux 交叉编译 linux/amd64
|
||
# make test Go 测试 + 前端测试
|
||
# make smoke 真实构建冒烟测试(§8.3-6)
|
||
# make dev 双进程热重载(air + vite dev)
|
||
# make vulncheck govulncheck
|
||
|
||
VERSION ?= $(shell git describe --tags --always 2>/dev/null || echo dev)
|
||
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo none)
|
||
DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
||
LDFLAGS := -s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(DATE)
|
||
|
||
.PHONY: web sync-assets build linux test smoke dev vulncheck clean
|
||
|
||
web:
|
||
cd web && npm ci && npm run build
|
||
|
||
# go:embed 只能引用本包目录树内文件:产物必须拷进 internal/webui/dist
|
||
sync-assets:
|
||
rm -rf internal/webui/dist
|
||
cp -r web/dist internal/webui/dist
|
||
touch internal/webui/dist/.gitkeep
|
||
|
||
build: web sync-assets
|
||
CGO_ENABLED=0 go build -trimpath -ldflags="$(LDFLAGS)" -o pn ./cmd/pn
|
||
|
||
linux: web sync-assets
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="$(LDFLAGS)" \
|
||
-o pn-linux-amd64 ./cmd/pn
|
||
|
||
test:
|
||
go vet ./...
|
||
go test ./...
|
||
cd web && npm test
|
||
|
||
# 构建冒烟(§8.3-6):真实构建 → 起服务 → 断言公开页与 script/link 资源 200 + 正确 MIME
|
||
smoke: build
|
||
./scripts/smoke.sh
|
||
|
||
dev:
|
||
air &
|
||
cd web && npm run dev
|
||
|
||
vulncheck:
|
||
govulncheck ./...
|
||
|
||
clean:
|
||
rm -f pn pn-linux-amd64
|