From b4440df0cfdd018373dc8fb33c495636db0ea843 Mon Sep 17 00:00:00 2001 From: Ezira Ashenafi Date: Wed, 3 Sep 2025 13:48:24 +0300 Subject: [PATCH] chore(cli): generate profiler output file on process exit event --- .../graphql-codegen-cli/src/generate-and-save.ts | 13 ++++++++----- .../graphql-codegen-cli/src/utils/file-system.ts | 6 +++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/graphql-codegen-cli/src/generate-and-save.ts b/packages/graphql-codegen-cli/src/generate-and-save.ts index b95511219b7..9dc20aa452e 100644 --- a/packages/graphql-codegen-cli/src/generate-and-save.ts +++ b/packages/graphql-codegen-cli/src/generate-and-save.ts @@ -5,7 +5,7 @@ import { executeCodegen } from './codegen.js'; import { CodegenContext, ensureContext } from './config.js'; import { lifecycleHooks } from './hooks.js'; import { debugLog } from './utils/debugging.js'; -import { mkdirp, readFile, unlinkFile, writeFile } from './utils/file-system.js'; +import { mkdirp, readFile, unlinkFile, writeFile, writeFileSync } from './utils/file-system.js'; import { createWatcher } from './utils/watcher.js'; const hash = (content: string): string => createHash('sha1').update(content).digest('base64'); @@ -128,6 +128,13 @@ export async function generate( return generationResult; } + // Register on exit listener to write profiler output + process.on('exit', () => { + if (context.profilerOutput) { + writeFileSync(join(context.cwd, context.profilerOutput), JSON.stringify(context.profiler.collect())); + } + }); + // watch mode if (config.watch) { return createWatcher(context, writeOutput).runningWatcher; @@ -138,10 +145,6 @@ export async function generate( await context.profiler.run(() => writeOutput(outputFiles), 'writeOutput'); await context.profiler.run(() => lifecycleHooks(config.hooks).beforeDone(), 'Lifecycle: beforeDone'); - if (context.profilerOutput) { - await writeFile(join(context.cwd, context.profilerOutput), JSON.stringify(context.profiler.collect())); - } - return outputFiles; } diff --git a/packages/graphql-codegen-cli/src/utils/file-system.ts b/packages/graphql-codegen-cli/src/utils/file-system.ts index 9fd9b3189ef..93b3c043ba9 100644 --- a/packages/graphql-codegen-cli/src/utils/file-system.ts +++ b/packages/graphql-codegen-cli/src/utils/file-system.ts @@ -1,4 +1,4 @@ -import { promises, unlink as fsUnlink } from 'fs'; +import { promises, unlink as fsUnlink, writeFileSync as fsWriteFileSync } from 'fs'; const { access: fsAccess, writeFile: fsWriteFile, readFile: fsReadFile, mkdir } = promises; @@ -10,6 +10,10 @@ export function writeFile(filepath: string, content: string) { return fsWriteFile(filepath, content); } +export function writeFileSync(filepath: string, content: string) { + return fsWriteFileSync(filepath, content); +} + export function readFile(filepath: string) { return fsReadFile(filepath, 'utf-8'); }