Run integration config hook on astro sync (#6238)

* refactor: move sync to core

* fix: runHookConfigSetup in CLI

* chore: changeset

* fix: sync import on test-utils

* fix: use syncCli in check
This commit is contained in:
Ben Holmes 2023-02-14 09:26:30 -05:00 committed by GitHub
parent e00e934140
commit deacd5443a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 31 additions and 11 deletions

View file

@ -0,0 +1,5 @@
---
'astro': patch
---
Fix: run integration setup hooks during `astro sync`

View file

@ -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;

View file

@ -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);
}

View file

@ -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);

View file

@ -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<ProcessExit> {
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<ProcessExit> {
const timerStart = performance.now();
// Needed to load content config
const tempViteServer = await createServer(

View file

@ -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';