diff --git a/packages/cli/src/bin/build-core.ts b/packages/cli/src/bin/build-core.ts index cff680a081..c0c9d16c00 100644 --- a/packages/cli/src/bin/build-core.ts +++ b/packages/cli/src/bin/build-core.ts @@ -4,6 +4,7 @@ import path from 'node:path'; import type { BuildFlags } from '../config/index.js'; import { projectRoot } from '../config/index.js'; import { buildI18N } from '../util/i18n.js'; +import { buildInfra } from '../util/infra.js'; const cwd = path.resolve(projectRoot, 'apps', 'core'); @@ -45,6 +46,7 @@ const flags = { } satisfies BuildFlags; buildI18N(); +await buildInfra(); spawn( 'node', [ diff --git a/packages/cli/src/bin/dev-core.ts b/packages/cli/src/bin/dev-core.ts index 6b5d8c3478..0cd87dbbe8 100644 --- a/packages/cli/src/bin/dev-core.ts +++ b/packages/cli/src/bin/dev-core.ts @@ -7,6 +7,7 @@ import { config } from 'dotenv'; import { type BuildFlags, projectRoot } from '../config/index.js'; import { watchI18N } from '../util/i18n.js'; +import { watchInfra } from '../util/infra.js'; const files = ['.env', '.env.local']; @@ -93,6 +94,7 @@ flags.channel = buildFlags.channel as any; flags.coverage = buildFlags.coverage; watchI18N(); +await watchInfra(); spawn( 'node', [ diff --git a/packages/cli/src/util/infra.ts b/packages/cli/src/util/infra.ts new file mode 100644 index 0000000000..4c9a52f50a --- /dev/null +++ b/packages/cli/src/util/infra.ts @@ -0,0 +1,42 @@ +import { resolve } from 'node:path'; + +import { build } from 'vite'; + +import { projectRoot } from '../config/index.js'; + +const infraFilePath = resolve( + projectRoot, + 'packages', + 'infra', + 'vite.config.ts' +); +const pluginInfraFilePath = resolve( + projectRoot, + 'packages', + 'plugin-infra', + 'vite.config.ts' +); + +export const buildInfra = async () => { + await build({ + configFile: infraFilePath, + }); + await build({ + configFile: pluginInfraFilePath, + }); +}; + +export const watchInfra = async () => { + await build({ + configFile: infraFilePath, + build: { + watch: {}, + }, + }); + await build({ + configFile: pluginInfraFilePath, + build: { + watch: {}, + }, + }); +};