diff --git a/.changeset/cold-spoons-battle.md b/.changeset/cold-spoons-battle.md new file mode 100644 index 0000000000..1245d2a262 --- /dev/null +++ b/.changeset/cold-spoons-battle.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix: run integration setup hooks during `astro sync` diff --git a/packages/astro/src/cli/check/index.ts b/packages/astro/src/cli/check/index.ts index 037525a5b2..069ce343c8 100644 --- a/packages/astro/src/cli/check/index.ts +++ b/packages/astro/src/cli/check/index.ts @@ -21,8 +21,8 @@ interface Result { export async function check(settings: AstroSettings, { logging }: { logging: LogOptions }) { console.log(bold('astro check')); - const { sync } = await import('../sync/index.js'); - const syncRet = await sync(settings, { logging, fs }); + const { syncCli } = await import('../../core/sync/index.js'); + const syncRet = await syncCli(settings, { logging, fs }); // early exit on sync failure if (syncRet === 1) return syncRet; diff --git a/packages/astro/src/cli/index.ts b/packages/astro/src/cli/index.ts index 27c2a323cb..0cec490bd1 100644 --- a/packages/astro/src/cli/index.ts +++ b/packages/astro/src/cli/index.ts @@ -212,9 +212,9 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { } case 'sync': { - const { sync } = await import('./sync/index.js'); + const { syncCli } = await import('../core/sync/index.js'); - const ret = await sync(settings, { logging, fs }); + const ret = await syncCli(settings, { logging, fs }); return process.exit(ret); } diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index a2baa46095..638d78d105 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -81,7 +81,7 @@ class AstroBuilder { ); await runHookConfigDone({ settings: this.settings, logging }); - const { sync } = await import('../../cli/sync/index.js'); + const { sync } = await import('../sync/index.js'); const syncRet = await sync(this.settings, { logging, fs }); if (syncRet !== 0) { return process.exit(syncRet); diff --git a/packages/astro/src/cli/sync/index.ts b/packages/astro/src/core/sync/index.ts similarity index 73% rename from packages/astro/src/cli/sync/index.ts rename to packages/astro/src/core/sync/index.ts index f321b8b0ba..f849ff6cf2 100644 --- a/packages/astro/src/cli/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -5,16 +5,31 @@ import { createServer } from 'vite'; import type { AstroSettings } from '../../@types/astro'; import { createContentTypesGenerator } from '../../content/index.js'; import { globalContentConfigObserver } from '../../content/utils.js'; -import { getTimeStat } from '../../core/build/util.js'; -import { createVite } from '../../core/create-vite.js'; -import { AstroError, AstroErrorData } from '../../core/errors/index.js'; -import { info, LogOptions } from '../../core/logger/core.js'; +import { getTimeStat } from '../build/util.js'; +import { createVite } from '../create-vite.js'; +import { runHookConfigSetup } from '../../integrations/index.js'; +import { AstroError, AstroErrorData } from '../errors/index.js'; +import { info, LogOptions } from '../logger/core.js'; import { setUpEnvTs } from '../../vite-plugin-inject-env-ts/index.js'; +type ProcessExit = 0 | 1; + +export async function syncCli( + settings: AstroSettings, + { logging, fs }: { logging: LogOptions; fs: typeof fsMod } +): Promise { + const resolvedSettings = await runHookConfigSetup({ + settings, + logging, + command: 'build', + }); + return sync(resolvedSettings, { logging, fs }); +} + export async function sync( settings: AstroSettings, { logging, fs }: { logging: LogOptions; fs: typeof fsMod } -): Promise<0 | 1> { +): Promise { const timerStart = performance.now(); // Needed to load content config const tempViteServer = await createServer( diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index 856c0b09fe..bb06f90e42 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -5,7 +5,7 @@ import fs from 'fs'; import os from 'os'; import stripAnsi from 'strip-ansi'; import { fileURLToPath } from 'url'; -import { sync } from '../dist/cli/sync/index.js'; +import { sync } from '../dist/core/sync/index.js'; import build from '../dist/core/build/index.js'; import { openConfig } from '../dist/core/config/config.js'; import { createSettings } from '../dist/core/config/index.js';