diff --git a/docs/generated/packages/vite/executors/build.json b/docs/generated/packages/vite/executors/build.json index f30daf1a875b5..e0b1122a7daed 100644 --- a/docs/generated/packages/vite/executors/build.json +++ b/docs/generated/packages/vite/executors/build.json @@ -81,8 +81,8 @@ }, "watch": { "description": "Enable re-building when files change.", - "type": "object", - "default": null + "oneOf": [{ "type": "boolean" }, { "type": "object" }], + "default": false } }, "definitions": {}, diff --git a/packages/vite/src/executors/build/build.impl.ts b/packages/vite/src/executors/build/build.impl.ts index 4c386383beae0..d2b46cd68a16b 100644 --- a/packages/vite/src/executors/build/build.impl.ts +++ b/packages/vite/src/executors/build/build.impl.ts @@ -15,13 +15,14 @@ export default async function* viteBuildExecutor( options: ViteBuildExecutorOptions, context: ExecutorContext ) { + const normalizedOptions = normalizeOptions(options); const projectRoot = context.projectsConfigurations.projects[context.projectName].root; const buildConfig = mergeConfig( - getViteSharedConfig(options, false, context), + getViteSharedConfig(normalizedOptions, false, context), { - build: getViteBuildOptions(options, context), + build: getViteBuildOptions(normalizedOptions, context), } ); @@ -37,7 +38,7 @@ export default async function* viteBuildExecutor( ) { await copyAssets( { - outputPath: options.outputPath, + outputPath: normalizedOptions.outputPath, assets: [ { input: projectRoot, @@ -79,3 +80,16 @@ function runInstance(options: InlineConfig) { ...options, }); } + +function normalizeOptions(options: ViteBuildExecutorOptions) { + const normalizedOptions = { ...options }; + + // coerce watch to null or {} to match with Vite's watch config + if (options.watch === false) { + normalizedOptions.watch = null; + } else if (options.watch === true) { + normalizedOptions.watch = {}; + } + + return normalizedOptions; +} diff --git a/packages/vite/src/executors/build/schema.d.ts b/packages/vite/src/executors/build/schema.d.ts index e4a29d3abe789..5e51ddfab5a60 100644 --- a/packages/vite/src/executors/build/schema.d.ts +++ b/packages/vite/src/executors/build/schema.d.ts @@ -12,5 +12,5 @@ export interface ViteBuildExecutorOptions { logLevel?: 'info' | 'warn' | 'error' | 'silent'; mode?: string; ssr?: boolean | string; - watch?: object | null; + watch?: object | boolean; } diff --git a/packages/vite/src/executors/build/schema.json b/packages/vite/src/executors/build/schema.json index 63798f6b78372..a3f455669621a 100644 --- a/packages/vite/src/executors/build/schema.json +++ b/packages/vite/src/executors/build/schema.json @@ -121,8 +121,15 @@ }, "watch": { "description": "Enable re-building when files change.", - "type": "object", - "default": null + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object" + } + ], + "default": false } }, "definitions": {}, diff --git a/packages/vite/src/utils/options-utils.ts b/packages/vite/src/utils/options-utils.ts index 03afe25c6c548..7644f925233a7 100644 --- a/packages/vite/src/utils/options-utils.ts +++ b/packages/vite/src/utils/options-utils.ts @@ -142,7 +142,7 @@ export function getViteBuildOptions( manifest: options.manifest, ssrManifest: options.ssrManifest, ssr: options.ssr, - watch: options.watch, + watch: options.watch as BuildOptions['watch'], }; }