6.2 源码构建

源码构建与开发

适合需要二次开发、自定义打包的开发者。

环境要求

  • Go 1.25+
  • Node.js 22+ 与 pnpm 9+(构建前端管理后台)
  • (可选)MySQL 5.7+ / PostgreSQL 9.6+
  • (可选)Redis 6.0+

1. 克隆仓库

git clone https://github.com/muleiwu/dwz-server.git
cd dwz-server

CNB 镜像:git clone https://cnb.cool/mliev/dwz/dwz-server.git

2. 安装依赖

go mod download

3. 运行开发服务器

cp config.yaml.example config.yaml
# 根据需要编辑 config.yaml
go run main.go

开发模式建议使用 SQLite + 内存缓存,避免启动外部依赖:

database:
  driver: sqlite
  filepath: "./config/sqlite.db"
cache:
  driver: local
id_generator:
  driver: local

4. 运行测试

go test ./...
go test -cover ./...
go test -race ./...

5. 构建二进制

仅后端

CGO_ENABLED=0 go build -ldflags="-s -w" -o dwz-server main.go

带前端的完整打包

# 1. 构建前端(需要先克隆 admin-webui 仓库到同级目录)
cd admin-webui && pnpm install && pnpm run build:antd --filter='!./docs' && cd ..

# 2. 复制前端产物到 static/admin
mkdir -p static/admin && cp -r admin-webui/apps/web-antd/dist/* static/admin/

# 3. 构建后端(前端资源会通过 go:embed 嵌入)
CGO_ENABLED=0 go build -ldflags="-s -w" -o dwz-server main.go

详细的多平台打包流程请参考仓库 docs/manual-build.md

6. 目录速览

app/
  controller/    HTTP handler(REST endpoint)
  service/       业务逻辑
  dao/           GORM 数据访问
  model/         数据模型
  dto/           请求/响应 DTO
  middleware/    认证、CORS、操作日志、安装校验
config/
  assembly.go    依赖注入装配顺序
  server.go      服务启动顺序
  autoload/      路由与依赖提供者
internal/        内部包:缓存、数据库、HTTP server 等
templates/       嵌入式模板(错误页、安装页)
static/          嵌入式管理后台构建产物