如何自定义openapi-generator-cli@2.5.2的Enum模板去除下划线
解决OpenAPI Generator生成无下划线大写Enum的问题
方案一:修改全局模板(不推荐,更新包会覆盖)
- 先定位全局安装的
@openapitools/openapi-generator-cli包路径,执行命令:
npm list -g @openapitools/openapi-generator-cli
- 进入该路径下的
templates目录,找到你使用的前端生成器对应的模板文件夹(比如typescript-axios、javascript等),找到modelEnum.mustache文件。 - 打开模板文件,找到枚举成员名称的代码行,比如原内容可能是:
{{enumVarName}} = '{{{value}}}',
将{{enumVarName}}替换为{{enumVarName | replace:"_":""}},去掉所有下划线,修改后如下:
{{enumVarName | replace:"_":""}} = '{{{value}}}',
- 保存文件后重新执行生成命令,就能得到无下划线的大写Enum。
方案二:使用本地自定义模板(推荐,避免全局修改被覆盖)
- 从全局包的模板目录中复制
modelEnum.mustache文件到本地项目的自定义目录(比如./openapi-templates)。 - 按方案一中的修改逻辑,调整本地模板文件里的枚举成员名称,去掉下划线。
- 在生成命令中添加
--template-dir参数指定本地模板目录,示例命令:
openapi-generator-cli generate -i your-openapi-spec.yaml -g typescript-axios -o ./src/api --template-dir ./openapi-templates --additional-properties enumPropertyNaming=UPPERCASE
生成时会优先使用本地修改后的模板,不会影响全局包文件。
补充说明
- 若不确定
enumVarName的生成逻辑,也可以直接对枚举原始值处理:比如用{{value | upperCase | replace:"_":""}},但要确认后端snake_case值转成大写无下划线后是否符合需求。 - 2.5.2版本的OpenAPI Generator支持Mustache的
replace过滤器,该操作是可行的。
内容的提问来源于stack exchange,提问作者vanita
相关产品推荐
相关产品推荐

