【问题标题】:OpenApiGenerator - How can I skip generating file changes because of a version changeOpenApi Generator - 由于版本更改,我如何跳过生成文件更改
【发布时间】:2020-12-07 05:35:13
【问题描述】:

我正在使用typescript-rxjs 生成器。每当我生成 API 客户端的新版本时,所有文件都会更改,其中 99% 是因为版本更改: * The version of the OpenAPI document: 1.47.0-rc.20。真正的变化会在如此多的变化中消失。

我不想覆盖生成器的所有文件模板。这似乎效率低下,因为我必须观察模板的变化。

【问题讨论】:

  • 与此同时,我在生成 api 之前将 swagger 版本设置为 0.0.0,因此所有真正的更改现在都可以在我的 git 提交中看到。
  • 这是git 更改的问题吗?如果是这样,为什么要提交生成的文件?

标签: typescript openapi-generator


【解决方案1】:

不同的 OpenAPI 生成器使用 Mustache 作为模板引擎来生成不同的工件。

在这个特定的用例中,版本信息在licenseInfo.mustache中定义。

此模板包含在用于生成不同客户端工件的其余模板中。

您可以尝试修改该模板并提供您自己的版本。 OpenAPI 生成器使您能够override 现有模板。

修改后,您需要 configure 用作生成器的工具(CLI、Maven、Gradle),以指明在何处查找修改后的模板。

如有必要,您甚至可以提供您的own custom user defined templates

另一种方法可能是定义某种file post-processing 逻辑,一旦生成器完成其进程,就会执行该逻辑。

对于typescript-rxjs生成器,要执行的代码必须在环境变量TS_POST_PROCESS_FILE中定义为字符串值。

一个典型的例子:

export TS_POST_PROCESS_FILE="/usr/local/bin/prettier --write"

在您的情况下,也许您可​​以定义某种脚本,例如,使用sed 或其他文本处理工具,如果您使用的是基于 linux 或 unix 的操作系统,或者自定义 node.js 脚本,则可以删除该脚本信息。解决方案将再次取决于实际机制 - CLI、Maven、Gradle,... - 您用于生成代码。

话虽如此,请考虑是否有必要将生成的文件置于版本控制之下。可能有一些机制可以让你的代码直接生成和使用它,或者你可以定义 CI 流来生成一个可以在私有注册表中使用的 npm 包,并在必要时在你的不同项目中使用这个包。

【讨论】:

  • @MaximilianFriedmann 请考虑在问题中指出您用于生成代码的工具。它可能有助于为您提供更方便的答案指导。我希望列出的一些解决方案对您有所帮助。
  • 我使用 OpenApi 生成器和 typescript-rxjs 模板。我明确要求提供不需要修改模板的解决方案。如果没有其他解决方案,我将不得不这样做。
  • 非常感谢@MaximilianFriedmann 的反馈,非常感谢。是的,但我的意思是,您使用的是 Maven、Gradle 还是 CLI?我明白。在任何情况下,请注意,据我了解,您只需要覆盖您想要的胡子模板,而不是全部,当然 licenseInfo 将是生成器中包含的模板。另外,后处理文件的方法呢?我知道它可能会提供一个不太便携的解决方案,但肯定会允许您处理生成的文件而无需更改模板
  • 不知道我可以部分覆盖它们,非常感谢您的提示。我使用 NPM CLI,它现在可以工作了。
  • 这很棒@MaximilianFriedmann。我很高兴知道你能够让它发挥作用。如果我能提供帮助,请不要犹豫与我联系。
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 2022-07-23
  • 1970-01-01
  • 2021-11-15
  • 2016-08-27
  • 1970-01-01
  • 2021-08-08
相关资源
最近更新 更多