graphql-code-generator
graphql-code-generator copied to clipboard
feat(graphql-modules-preset): allow custom namespace name
Is your feature request related to a problem? Please describe.
Hi!
I am using graphql-modules
and preset @graphql-codegen/graphql-modules-preset
.
codegen.ts
:
import type { CodegenConfig } from '@graphql-codegen/cli'
const config: CodegenConfig = {
schema: './src/modules/*/*.graphql',
generates: {
'./src/modules/': {
preset: 'graphql-modules',
presetConfig: {
baseTypesPath: './generated.ts',
filename: './generated.ts',
},
plugins: [
'typescript',
'typescript-resolvers',
],
},
},
}
export default config
This config generates generated.ts
like this.
src/modules/
├── generated.ts # `presetConfig.baseTypesPath`
├── foo
│ ├── generated.ts # `presetConfig.filename`
│ ├── index.graphql # Schema for foo module
│ └── index.ts
├── index.ts
└── bar
├── generated.ts # `presetConfig.filename`
├── index.graphql # Schema for bar module
└── index.ts
src/modules/foo/index.ts
:
import { FooModule } from './generated.js'
const resolvers: FooModule.Resolvers = {
Query: {
// ...
},
}
As we can see above, a directory name becomes a generated namespace prefix.
-
foo/index.graphql
=>FooModule
-
bar/index.graphql
=>BarModule
But, I don't want a prefix. For instance, I want to do this.
import { Module } from './generated.js'
Thus when you rename the directory, you don't need to change source code. This is a benefit.
How do you think?
Thanks.
Describe the solution you'd like
What if we introduce a custom option like generates.config.namingConvention
?
I'd like to use a custom function, that probably takes context information like path and graphql schema as a argument(s). It returns string, and becomes namespace name.
Describe alternatives you've considered
No response
Any additional important details?
No response