loopback-next
loopback-next copied to clipboard
OpenAPI generator use case: recurring vs. one-time
Suggestion
The current OpenAPI generator seems like it's meant to be used once, upfront, to scaffold code.
My suggestion is to (also/instead) support the use case where you run the generator regularly as part of your build, and don't even check in the generated files. (this is how I generally prefer to use code generators)
Was this considered in the design of the current generator? Is it possible to achieve something like this with LoopBack today?
Details
I'm starting a new project, and I expect to gradually evolve the schema over a couple years. Here's how I want it to work when a developer is updating application code to account for changes in the schema:
- pull down the new schema
- run the application build (this runs the code generator, replacing all the generated files)
- application code that references the generated files now has TypeScript errors, showing you where your attention is needed. (follow the squiggles)
Other desirable properties of code generators:
- Generated files have a recognizable, git -ignorable ending (e.g.
.gen.ts
) - There's a big scary header comment at the top saying "THIS IS A GENERATED FILE, DO NOT EDIT"
- Ideally the generated code is formatted, at generation time, according to the project's prettier config. (for example, see graphql-code-generator)
- You never need to make a change in a generated file. Instead you make changes in the generator's input. (e.g. the OpenAPI schema or in the generator configuration)
- Because the generated file is unversioned and replaced wholesale, you're never asked to resolve a merge conflict between the new template and your project-specific changes.
Alternatives
- Is Loopback's OpenAPI generator built on top of other libraries or tools that I might be able to use separately?
- Do you know of other node.js web frameworks that might align with this philosophy? I don't need all the features loopback provides, I'm just hoping to make my OpenAPI schema the source of truth for endpoint declarations, input/output types, etc.
I would be interested in something like that too (a code generation tool for a contract-first development approach, with a clear separation between generated code and project code). Are there any updates on this issue?
@jrr in the end have you found other solutions ?
thank you.