Closed kdawgwilk closed 4 months ago
Hi @kdawgwilk 👋
I think this is a perfect use case for Codegen's life cycle hooks
A setting I normally use is to run prettier
on generated files using afterAllFileWrite: ["prettier --write"]
.
Here's an example config:
import type { CodegenConfig } from "@graphql-codegen/cli";
import { defineConfig } from "@eddeee888/gcg-typescript-resolver-files";
const config: CodegenConfig = {
schema: "**/schema.graphql",
hooks: {
afterAllFileWrite: ["prettier --write"], // This can be added to run prettier on all generated files
},
generates: {
"src/schema": defineConfig(),
},
};
export default config;
Here's an example prettified output: https://github.com/eddeee888/graphql-code-generator-plugins/blob/master/packages/typescript-resolver-files-e2e/src/test-modules/modules/typeDefs.generated.ts
Please let me know whether this solves your issue or not 🙂
It worked when i added it at the top level like you suggested but i had originally tried with it set only on one of my outputs e.g.
const config: CodegenConfig = {
schema: 'functions/**/schema.graphql',
ignoreNoDocuments: true, // for better experience with the watcher
generates: {
'functions/src/schema': {
...defineConfig({
typesPluginsConfig: {
contextType: './context.js#Context',
enumsAsTypes: false,
},
emitLegacyCommonJSImports: false,
}),
hooks: {
afterAllFileWrite: ['prettier --write'],
},
},
'web/src/lib/gql/': {
preset: 'client',
documents: 'web/src/**/*.tsx',
},
},
config: {
scalars: {
DateTime: 'string',
Date: 'string',
URL: 'string',
},
},
};
So there may still be a bug here but i am at least no longer blocked by this issue
Also i am noticing the loc.start
and loc.end
also get updated for everything below where i change the schema which unfortunately causes many conflicts still 😞
I see. Could you help me understand if this is happening because multiple devs are making schema changes at the same time, causing conflicts?
If you are finding it getting in the way, maybe you can add it to .gitignore
?
Is your feature request related to a problem? Please describe. Because the
typeDefs.generated.ts
file is a single line it always ends up causing merge conflicts when checked in.Describe the solution you'd like I would like the JSON object to be pretty printed on multiple lines so that its less likely to cause merge conflicts
Describe alternatives you've considered Not checking in generated code. There are tradeoffs but I think those trade offs are another discussion and this would be useful either way.
Additional context N/A