diff --git a/docs/generated/packages/vite/executors/build.json b/docs/generated/packages/vite/executors/build.json index f30daf1a87..e0b1122a7d 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 4c386383be..d2b46cd68a 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 e4a29d3abe..5e51ddfab5 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 63798f6b78..a3f4556696 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 03afe25c6c..7644f92523 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'], }; }