From 5fab5b3700ec95ade7d0a604106723f17df51df1 Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Tue, 16 Jun 2026 23:06:06 +1000 Subject: [PATCH 1/3] Set up graphql config dev test (#10869) * Add dev-test/graphql-config * Set up graphql-config dev-test * Wire up test setup * Add fail assertion for generate:multi * set up esm/cjs tests * Fix dep issues --- dev-test/graphql-config/multi/.graphqlrc.yml | 10 ++++++++++ .../multi/default/schema.graphql | 3 +++ .../multi/project1/schema.graphql | 3 +++ dev-test/graphql-config/package.json | 20 +++++++++++++++++++ dev-test/graphql-config/single/.graphqlrc.yml | 6 ++++++ .../single/__generated__/types.ts | 15 ++++++++++++++ dev-test/graphql-config/single/schema.graphql | 3 +++ pnpm-lock.yaml | 9 +++++++++ 8 files changed, 69 insertions(+) create mode 100644 dev-test/graphql-config/multi/.graphqlrc.yml create mode 100644 dev-test/graphql-config/multi/default/schema.graphql create mode 100644 dev-test/graphql-config/multi/project1/schema.graphql create mode 100644 dev-test/graphql-config/package.json create mode 100644 dev-test/graphql-config/single/.graphqlrc.yml create mode 100644 dev-test/graphql-config/single/__generated__/types.ts create mode 100644 dev-test/graphql-config/single/schema.graphql diff --git a/dev-test/graphql-config/multi/.graphqlrc.yml b/dev-test/graphql-config/multi/.graphqlrc.yml new file mode 100644 index 00000000000..4bebd479a58 --- /dev/null +++ b/dev-test/graphql-config/multi/.graphqlrc.yml @@ -0,0 +1,10 @@ +projects: + default: + schema: 'default/schema.graphql' + project1: + schema: 'project1/schema.graphql' + extensions: + codegen: + generates: + 'project1/types.ts': + plugins: ['typescript'] diff --git a/dev-test/graphql-config/multi/default/schema.graphql b/dev-test/graphql-config/multi/default/schema.graphql new file mode 100644 index 00000000000..f5964388868 --- /dev/null +++ b/dev-test/graphql-config/multi/default/schema.graphql @@ -0,0 +1,3 @@ +type Query { + default: String +} diff --git a/dev-test/graphql-config/multi/project1/schema.graphql b/dev-test/graphql-config/multi/project1/schema.graphql new file mode 100644 index 00000000000..9dc4569a976 --- /dev/null +++ b/dev-test/graphql-config/multi/project1/schema.graphql @@ -0,0 +1,3 @@ +type Query { + project1: String +} diff --git a/dev-test/graphql-config/package.json b/dev-test/graphql-config/package.json new file mode 100644 index 00000000000..edf02097edf --- /dev/null +++ b/dev-test/graphql-config/package.json @@ -0,0 +1,20 @@ +{ + "name": "dev-test-graphql-config", + "version": "0.0.1", + "description": "Test graphql-config integration", + "private": true, + "scripts": { + "generate:cjs": "pnpm generate:cjs:single && pnpm generate:cjs:multi && pnpm generate:cjs:multi:project1", + "generate:cjs:multi": "node ../../packages/graphql-codegen-cli/dist/cjs/bin.js --config multi/.graphqlrc.yml || [ $? -eq 1 ]", + "generate:cjs:multi:project1": "node ../../packages/graphql-codegen-cli/dist/cjs/bin.js --config multi/.graphqlrc.yml --project project1", + "generate:cjs:single": "node ../../packages/graphql-codegen-cli/dist/cjs/bin.js --config single/.graphqlrc.yml", + "generate:esm": "pnpm generate:esm:single && pnpm generate:esm:multi && pnpm generate:esm:multi:project1", + "generate:esm:multi": "node ../../packages/graphql-codegen-cli/dist/esm/bin.js --config multi/.graphqlrc.yml || [ $? -eq 1 ]", + "generate:esm:multi:project1": "node ../../packages/graphql-codegen-cli/dist/esm/bin.js --config multi/.graphqlrc.yml --project project1", + "generate:esm:single": "node ../../packages/graphql-codegen-cli/dist/esm/bin.js --config single/.graphqlrc.yml" + }, + "devDependencies": { + "@graphql-codegen/cli": "workspace:*", + "@graphql-codegen/typescript": "workspace:*" + } +} diff --git a/dev-test/graphql-config/single/.graphqlrc.yml b/dev-test/graphql-config/single/.graphqlrc.yml new file mode 100644 index 00000000000..1997407a4b5 --- /dev/null +++ b/dev-test/graphql-config/single/.graphqlrc.yml @@ -0,0 +1,6 @@ +schema: 'schema.graphql' +extensions: + codegen: + generates: + '__generated__/types.ts': + plugins: ['typescript'] diff --git a/dev-test/graphql-config/single/__generated__/types.ts b/dev-test/graphql-config/single/__generated__/types.ts new file mode 100644 index 00000000000..ec941a4c2e0 --- /dev/null +++ b/dev-test/graphql-config/single/__generated__/types.ts @@ -0,0 +1,15 @@ +export type Maybe = T | null; +export type InputMaybe = Maybe; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string }; + String: { input: string; output: string }; + Boolean: { input: boolean; output: boolean }; + Int: { input: number; output: number }; + Float: { input: number; output: number }; +}; + +export type Query = { + __typename?: 'Query'; + single?: Maybe; +}; diff --git a/dev-test/graphql-config/single/schema.graphql b/dev-test/graphql-config/single/schema.graphql new file mode 100644 index 00000000000..64b40ac8e75 --- /dev/null +++ b/dev-test/graphql-config/single/schema.graphql @@ -0,0 +1,3 @@ +type Query { + single: String +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 678cabf1c39..a484b874f14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -189,6 +189,15 @@ importers: specifier: workspace:* version: link:../../packages/plugins/typescript/resolvers/dist + dev-test/graphql-config: + devDependencies: + '@graphql-codegen/cli': + specifier: workspace:* + version: link:../../packages/graphql-codegen-cli/dist + '@graphql-codegen/typescript': + specifier: workspace:* + version: link:../../packages/plugins/typescript/typescript/dist + examples/persisted-documents: dependencies: '@graphql-yoga/plugin-persisted-operations': From 3280ace4505dcadf5398b6cbf157a8c8d7a713c2 Mon Sep 17 00:00:00 2001 From: Diluka Date: Tue, 16 Jun 2026 21:22:40 +0800 Subject: [PATCH 2/3] fix loading multi projects graphql config (#10335) * Update graphql-config.ts Finally, check the default, otherwise the judgment function will be exited in advance. * Wire up tests * Add changeset --------- Co-authored-by: Eddy Nguyen --- .changeset/brave-weeks-see.md | 24 +++++++++++++++++++ .prettierignore | 1 + dev-test/graphql-config/multi/.graphqlrc.yml | 2 +- .../multi/project1/__generated__/types.ts | 15 ++++++++++++ dev-test/graphql-config/package.json | 1 + .../single/__generated__/types.ts | 10 ++++---- .../graphql-codegen-cli/src/graphql-config.ts | 8 +++---- 7 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 .changeset/brave-weeks-see.md create mode 100644 dev-test/graphql-config/multi/project1/__generated__/types.ts diff --git a/.changeset/brave-weeks-see.md b/.changeset/brave-weeks-see.md new file mode 100644 index 00000000000..a89b86cbc12 --- /dev/null +++ b/.changeset/brave-weeks-see.md @@ -0,0 +1,24 @@ +--- +'@graphql-codegen/cli': patch +--- + +Fix graphql-config loading order to correctly detect codegen projects + +Previously, a `graphql-config` file like this failed: + +```yml +projects: + default: + schema: 'default/schema.graphql' + project1: + schema: 'project1/schema.graphql' + extensions: + codegen: + generates: + 'project1/__generated__/types.ts': + plugins: ['typescript'] +``` + +This is because the `default` project doesn't have a `codegen` extension, which caused previous logic to short circuit before reading `project1`'s config. + +The fix reads every named project first, before reading the `default` project to exhaustively go through every single project. diff --git a/.prettierignore b/.prettierignore index b867565a093..a8646a2bf02 100644 --- a/.prettierignore +++ b/.prettierignore @@ -38,4 +38,5 @@ packages/graphql-codegen-cli/tests/test-files/error-document.graphql # Ignore dev-tests with no prettier requirement dev-test/general/githunt-invalid/invalid.graphql dev-test/general/test-schema/flow-types.flow.js +dev-test/graphql-config/**/__generated__/ dev-test-apollo-tooling/src/__generated__/ diff --git a/dev-test/graphql-config/multi/.graphqlrc.yml b/dev-test/graphql-config/multi/.graphqlrc.yml index 4bebd479a58..0feb7a1a716 100644 --- a/dev-test/graphql-config/multi/.graphqlrc.yml +++ b/dev-test/graphql-config/multi/.graphqlrc.yml @@ -6,5 +6,5 @@ projects: extensions: codegen: generates: - 'project1/types.ts': + 'project1/__generated__/types.ts': plugins: ['typescript'] diff --git a/dev-test/graphql-config/multi/project1/__generated__/types.ts b/dev-test/graphql-config/multi/project1/__generated__/types.ts new file mode 100644 index 00000000000..0920b543be9 --- /dev/null +++ b/dev-test/graphql-config/multi/project1/__generated__/types.ts @@ -0,0 +1,15 @@ +export type Maybe = T | null; +export type InputMaybe = Maybe; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } +}; + +export type Query = { + __typename?: 'Query'; + project1?: Maybe; +}; diff --git a/dev-test/graphql-config/package.json b/dev-test/graphql-config/package.json index edf02097edf..7d44a816a19 100644 --- a/dev-test/graphql-config/package.json +++ b/dev-test/graphql-config/package.json @@ -4,6 +4,7 @@ "description": "Test graphql-config integration", "private": true, "scripts": { + "generate": "pnpm generate:esm", "generate:cjs": "pnpm generate:cjs:single && pnpm generate:cjs:multi && pnpm generate:cjs:multi:project1", "generate:cjs:multi": "node ../../packages/graphql-codegen-cli/dist/cjs/bin.js --config multi/.graphqlrc.yml || [ $? -eq 1 ]", "generate:cjs:multi:project1": "node ../../packages/graphql-codegen-cli/dist/cjs/bin.js --config multi/.graphqlrc.yml --project project1", diff --git a/dev-test/graphql-config/single/__generated__/types.ts b/dev-test/graphql-config/single/__generated__/types.ts index ec941a4c2e0..e1e6a8ca0c3 100644 --- a/dev-test/graphql-config/single/__generated__/types.ts +++ b/dev-test/graphql-config/single/__generated__/types.ts @@ -2,11 +2,11 @@ export type Maybe = T | null; export type InputMaybe = Maybe; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { - ID: { input: string; output: string }; - String: { input: string; output: string }; - Boolean: { input: boolean; output: boolean }; - Int: { input: number; output: number }; - Float: { input: number; output: number }; + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } }; export type Query = { diff --git a/packages/graphql-codegen-cli/src/graphql-config.ts b/packages/graphql-codegen-cli/src/graphql-config.ts index 2701f108743..89ee75bb67d 100644 --- a/packages/graphql-codegen-cli/src/graphql-config.ts +++ b/packages/graphql-codegen-cli/src/graphql-config.ts @@ -53,10 +53,6 @@ function isGraphQLConfig(config: GraphQLConfig): config is GraphQLConfig { return false; } - try { - return config.getDefault().hasExtension('codegen'); - } catch {} - try { for (const projectName in config.projects) { if (Object.prototype.hasOwnProperty.call(config.projects, projectName)) { @@ -69,5 +65,9 @@ function isGraphQLConfig(config: GraphQLConfig): config is GraphQLConfig { } } catch {} + try { + return config.getDefault().hasExtension('codegen'); + } catch {} + return false; } From 26702962c7bd3a7c445277975e3e8e1edad8384b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 23:40:42 +1000 Subject: [PATCH 3/3] chore(release): update monorepo packages versions (#10870) Co-authored-by: github-actions[bot] --- .changeset/brave-weeks-see.md | 24 ------------------ packages/graphql-codegen-cli/CHANGELOG.md | 30 +++++++++++++++++++++++ packages/graphql-codegen-cli/package.json | 2 +- 3 files changed, 31 insertions(+), 25 deletions(-) delete mode 100644 .changeset/brave-weeks-see.md diff --git a/.changeset/brave-weeks-see.md b/.changeset/brave-weeks-see.md deleted file mode 100644 index a89b86cbc12..00000000000 --- a/.changeset/brave-weeks-see.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -'@graphql-codegen/cli': patch ---- - -Fix graphql-config loading order to correctly detect codegen projects - -Previously, a `graphql-config` file like this failed: - -```yml -projects: - default: - schema: 'default/schema.graphql' - project1: - schema: 'project1/schema.graphql' - extensions: - codegen: - generates: - 'project1/__generated__/types.ts': - plugins: ['typescript'] -``` - -This is because the `default` project doesn't have a `codegen` extension, which caused previous logic to short circuit before reading `project1`'s config. - -The fix reads every named project first, before reading the `default` project to exhaustively go through every single project. diff --git a/packages/graphql-codegen-cli/CHANGELOG.md b/packages/graphql-codegen-cli/CHANGELOG.md index 2822294da40..16714c20fc6 100644 --- a/packages/graphql-codegen-cli/CHANGELOG.md +++ b/packages/graphql-codegen-cli/CHANGELOG.md @@ -1,5 +1,35 @@ # @graphql-codegen/cli +## 7.1.3 + +### Patch Changes + +- [#10335](https://github.com/dotansimha/graphql-code-generator/pull/10335) + [`3280ace`](https://github.com/dotansimha/graphql-code-generator/commit/3280ace4505dcadf5398b6cbf157a8c8d7a713c2) + Thanks [@Diluka](https://github.com/Diluka)! - Fix graphql-config loading order to correctly + detect codegen projects + + Previously, a `graphql-config` file like this failed: + + ```yml + projects: + default: + schema: 'default/schema.graphql' + project1: + schema: 'project1/schema.graphql' + extensions: + codegen: + generates: + 'project1/__generated__/types.ts': + plugins: ['typescript'] + ``` + + This is because the `default` project doesn't have a `codegen` extension, which caused previous + logic to short circuit before reading `project1`'s config. + + The fix reads every named project first, before reading the `default` project to exhaustively go + through every single project. + ## 7.1.2 ### Patch Changes diff --git a/packages/graphql-codegen-cli/package.json b/packages/graphql-codegen-cli/package.json index b14ed8fc034..1698e6b2a4e 100644 --- a/packages/graphql-codegen-cli/package.json +++ b/packages/graphql-codegen-cli/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/cli", - "version": "7.1.2", + "version": "7.1.3", "type": "module", "repository": { "type": "git",