Releases: dhslegen/base-code
Release list
v0.8.2
v0.8.1
v0.8.0
Changelog
- e3d715d docs: v0.8.0 发布说明(含未单独发版的 v0.7.0 包映射)
- d003525 feat: 支持 base-code --version,版本号由构建期 ldflags 注入
- f4f5426 refactor: 抽出 validateMapping 骨架,消除两个映射校验的逐行重复
- 9f2d91d refactor: 清掉 mapper-xml 的死 NameSuffix,并写明 Resource 层为何留空
- 6b7058d fix: 映射 flag 的 CSV 重复键报错,不再静默后覆盖前
- 4170a12 test: 守护模板里的 Cls/Pkg 键合法,堵住 golden 抓不到的键错误
- d042f27 fix: Generate 入口校验各层类名两两互异,拦下 class-mapping 撞名
- 228803a fix: 映射类 flag 传空串视为未提供,不再静默清空配置文件的映射
- 2abbb0f fix: package-mapping 包段拒绝 Java 保留字(补回 Layers 常量时代白送的不变量)
- 76e5aff docs: init 模版与 README 增补 class-mapping 类名映射说明
- 9700328 refactor: 模板类名全部改经 Cls 出口,映射贯通类声明/泛型/import/XML
- 380c178 feat: generator 引入 ClassName 类名唯一出口,OutputPath 文件名走类名映射
- 10d32ca feat: gen 命令支持 --class-mapping flag(CSV 解析器泛化为双映射共用)
- 752382a feat: config 支持 class-mapping 类名映射(13 层名键 + {} 占位符校验)
- fe643c2 docs: init 模版与 README 增补 package-mapping 包映射说明
- ea30330 feat: dry-run 层标记行输出目标落盘路径
- d9c7c82 refactor: 模板包名全部改经 Pkg 出口,映射贯通 package/import/XML namespace
- 4eb592a feat: generator 引入 Pkg 包名唯一出口与 OutputPath 包映射(含键一致性守护测试)
- 2121d1b feat: gen 命令支持 --package-mapping flag(CSV 键值对,整体覆盖配置文件)
- 03dee8a feat: config 支持 package-mapping 包映射(11 合法键 + 值校验 + flag 整体覆盖)
- 1d0eb84 test: 增加全 14 层渲染 golden 基准,冻结默认产物
- 733b3a1 docs: v0.6.0 发布说明
v0.6.0
v0.6.0 发布说明
亮点:base-code init 一键生成配置模版
从零手写 base-code.yaml 门槛高——改是容易的。新命令在当前目录生成教学型全量模版:
base-code init # 生成 ./base-code.yaml(已存在时报错,--force 覆盖)- 必填三项已填可运行示例值:
tables/base-package/datasource.database - 其余配置全部以注释列出并标注约定默认值——需要什么就取消注释改什么
- 编辑后直接
base-code gen(gen默认读取./base-code.yaml,无需--config)
三步上手:init → 编辑 → gen。
其他改进
- 缺参报错在原有「可复制内联命令样例」之外,追加第二条自救通路提示:「也可先执行
base-code init生成配置模版」。 - 模版有效性由测试机械把关:产出文件必须能通过真实配置加载与必填校验,未来配置演进不会让模版悄悄失效。
兼容性
纯新增命令,gen 行为无任何变化。
升级
brew update && brew upgrade base-code # macOS / Linux
scoop update base-code # Windowsv0.5.0
v0.5.0 发布说明
亮点:必填校验下沉至「合并后生效配置」
必填不再是 flag 层面的概念。tables、base-package、db-name 三个必填项由 flag 与配置文件合并后的生效值统一裁决——任一来源提供即可(flag 优先),命令行层面彻底没有必填限制。
tables 首次获得配置态
base-code:
tables: [sys_user, sys_role] # 列表形态;--tables(CSV)显式提供时整体覆盖
base-package: com.example.demo
datasource:
database: demo配置文件写全三个必填项后,可零 flag 直接执行:
base-code gen --config base-code.yaml行为变化
| 场景 | v0.4.x | v0.5.0 |
|---|---|---|
配置文件含 tables,命令行不传 --tables |
cobra 报 required flag(s) "tables" not set,配置永远无法生效 |
正常生成 |
flag 与配置文件都缺 tables |
cobra 解析层报错 | 合并后校验报「缺少必填配置:--tables」,附可复制的最短命令样例 |
--tables 与配置文件同时提供 |
仅 flag 生效(配置态不存在) | flag 整体覆盖文件值(与其余配置项的覆盖语义一致) |
兼容性
- 既有用法完全兼容:继续用
--tables内联传表名的命令无任何变化。 - 无破坏性变更;报错文案从 cobra 英文错误变为中文「缺少必填配置」提示(面向 agent 自修复)。
升级
brew update && brew upgrade base-code # macOS / Linux
scoop update base-code # Windowsv0.4.0
base-code v0.4.0 — CLI 专业化改版
本版对命令行界面做了一次面向「专业、简洁、agent 友好」的重构。包含破坏性变更,升级前请阅读迁移说明。
⚠️ 破坏性变更(升级必读)
1. 默认不再生成 API 层(14 层 → 6 层)
这是静默的行为变化,最需注意。 v0.3.x 默认生成全 14 层;v0.4.0 默认只生成 6 层后端核心:
po mapper mapper-xml service service-impl query
不再默认生成的 8 层:api、api-impl、converter、req-dto、resp-dto、query-req-dto、page-query-req-dto、update-by-query-req-dto。
原因:DTO 五层与 converter 只被 api/api-impl 消费;不生成 API 层时它们没有消费者,属于死代码。默认砍掉使产物自洽。
恢复全 14 层(二选一):
- 命令行加
--with-api - 或配置文件加顶层键
with-api: true
老用户既有
base-code.yaml不含with-api键,升级后默认只出 6 层。若你的工程依赖 Feign/DTO 层,务必加上with-api: true,否则会缺文件(表现为编译期找不到XxxApi/XxxReqDto)。
2. Flag 改名(旧名已删除)
| 旧 flag(已删) | 新 flag | 说明 |
|---|---|---|
--without-api |
--with-api |
语义反转:旧的「不要 API」→ 新的「要 API」,缺省 false |
--only-table-modify |
--sync-schema |
改表后同步受影响层 |
--service-name |
--api-service-name |
@FeignClient 服务名 |
--base-path |
--api-base-path |
API 基础路径前缀 |
旧名会响亮失败(unknown flag),据此更新脚本即可。
3. 必填项收缩为 3 项
现在仅 --tables、--base-package、--db-name 必填。其余连接参数有约定默认值(见下),缺失时给出可复制的三参最短命令样例。
✨ 改进
连接参数约定默认值下沉
| 参数 | 默认值 |
|---|---|
--dialect |
mysql |
--db-host |
127.0.0.1 |
--db-port |
按方言派生(mysql 3306 / postgresql 5432) |
--db-user |
root |
--db-password |
空 |
--output-root |
./src/main/java |
本地开发最短命令:
base-code gen --tables it_user --base-package com.example.hello --db-name hello-mysql优先级不变:显式 flag > 配置文件 > 约定默认值。配置文件里的显式值不会被这些默认值覆盖。
帮助文本对标 openapi-generator
base-code gen --help 现按语义分组(生成目标 / 数据库连接 / API 层 / 生成行为),每个 flag 标注真实默认值,并附 4 条典型场景示例。
📌 --sync-schema 的层集合说明
--sync-schema 只重新生成「受表结构影响」的层,且与 --with-api 的取值联动:
- 默认(API-less 工程):
po、mapper-xml、query共 3 层 - 配
--with-api(含 DTO 的工程):加上req-dto、resp-dto、query-req-dto共 6 层
注意:若你的工程用
--with-api生成过 14 层,日后单跑--sync-schema请同样带上--with-api,否则 DTO 层不会被刷新而可能过期。
安装 / 升级
brew upgrade base-code # Homebrew
scoop update base-code # Scoop
go install github.com/dhslegen/base-code@latestv0.3.0
Changelog
- 0bc64a3 docs: TUTORIAL 同步 Overrides/LoadWithOverrides 与内联 flag
- cb3f66b fix: validate 补 --dialect 必填项,报错保持 agent 自修复通道
- e85216e docs: README 增加一行命令(内联 flag)用法
- 8076d56 feat: gen 命令支持全量内联配置 flag,无配置文件一行直达
- d45054f fix: 显式 --db-port 0 不被方言派生覆盖,gofmt 测试文件
- 652c036 feat: config 支持内联覆盖 LoadWithOverrides,必填校验含 agent 友好样例
v0.2.1
Changelog
- 5302194 feat: brew 安装自动装 shell 补全,README 补全指引改为标准 fpath 位置
v0.2.0
Changelog
- 3d56e34 docs: 删除工程级前置依赖声明(已自包含),补 api 配置说明
- f8eda35 feat!: api 层自包含——内联 ApiConstants 值、pageAll 改双参数消除 PageQueryReqDto
- 9cb8c7f feat(generator): TemplateData 透传 ServiceName/BasePath
- a13abc4 feat(config): 新增 api.service-name / api.base-path,缺省从 base-package 末段派生
- 3216b43 docs: README 添加 release/license/go/platform 徽章
v0.1.3
Changelog
- 397cafa fix: scoop manifest 落到 bucket/ 子目录(新版 scoop 惯例)