From 20702a9c3bb1cd87a54976dd3b686e4e715df263 Mon Sep 17 00:00:00 2001 From: Alec Aivazis Date: Thu, 28 Sep 2023 11:10:29 -0700 Subject: [PATCH] Write tsconfig before all generates (#1179) --- .changeset/mean-apes-judge.md | 5 ++++ .../src/plugin/codegen/typeRoot.ts | 3 +-- packages/houdini-react/src/plugin/vite.tsx | 7 ++++++ packages/houdini/src/vite/houdini.ts | 24 +++++++++---------- 4 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 .changeset/mean-apes-judge.md diff --git a/.changeset/mean-apes-judge.md b/.changeset/mean-apes-judge.md new file mode 100644 index 000000000..60cc1a4b8 --- /dev/null +++ b/.changeset/mean-apes-judge.md @@ -0,0 +1,5 @@ +--- +'houdini-react': patch +--- + +Fix another bug when deploying a fresh installation diff --git a/packages/houdini-react/src/plugin/codegen/typeRoot.ts b/packages/houdini-react/src/plugin/codegen/typeRoot.ts index 49f5166c4..02f739f68 100644 --- a/packages/houdini-react/src/plugin/codegen/typeRoot.ts +++ b/packages/houdini-react/src/plugin/codegen/typeRoot.ts @@ -36,7 +36,6 @@ export async function generate_type_root({ } await Promise.all([ - tsconfig(config), ...Object.entries(pages).map(async ([relative_path, { page, layout }]) => { // the type root must mirror the source tree const target_dir = path.join(config.typeRootDir, relative_path) @@ -109,7 +108,7 @@ ${layout.query_options ]) } -async function tsconfig(config: Config) { +export async function writeTsconfig(config: Config) { await fs.writeFile( path.join(config.rootDir, 'tsconfig.json'), JSON.stringify( diff --git a/packages/houdini-react/src/plugin/vite.tsx b/packages/houdini-react/src/plugin/vite.tsx index 3aad06f2f..0438ebee2 100644 --- a/packages/houdini-react/src/plugin/vite.tsx +++ b/packages/houdini-react/src/plugin/vite.tsx @@ -16,6 +16,7 @@ import { import type { BuildOptions } from 'vite' import { setManifest } from '.' +import { writeTsconfig } from './codegen/typeRoot' // in order to coordinate the client and server, the client's pending request cache // needs to start with a value for every query that we are sending on the server. @@ -91,6 +92,12 @@ export default { return id.substring(id.indexOf('virtual:houdini')) }, + async buildStart({ houdiniConfig }) { + if (!isSecondaryBuild()) { + await writeTsconfig(houdiniConfig) + } + }, + async load(id, { config }) { // we only care about the virtual modules that generate if (!id.startsWith('virtual:houdini')) { diff --git a/packages/houdini/src/vite/houdini.ts b/packages/houdini/src/vite/houdini.ts index 41e7fe570..be34169ba 100644 --- a/packages/houdini/src/vite/houdini.ts +++ b/packages/houdini/src/vite/houdini.ts @@ -127,6 +127,18 @@ export default function Plugin(opts: PluginConfig = {}): VitePlugin { // when the build starts, we need to make sure to generate async buildStart(args) { + for (const plugin of config.plugins) { + if (typeof plugin.vite?.buildStart !== 'function') { + continue + } + + // @ts-expect-error + plugin.vite!.buildStart.call(this, { + ...args, + houdiniConfig: config, + }) + } + // we need to generate the runtime if we are building in production if (viteEnv.mode === 'production' && !isSecondaryBuild()) { // make sure we have an up-to-date schema @@ -142,18 +154,6 @@ export default function Plugin(opts: PluginConfig = {}): VitePlugin { throw e } } - - for (const plugin of config.plugins) { - if (typeof plugin.vite?.buildStart !== 'function') { - continue - } - - // @ts-expect-error - plugin.vite!.buildStart.call(this, { - ...args, - houdiniConfig: config, - }) - } }, options(options) {