From b001d30036a7fd8f0493b813995e092d51e91423 Mon Sep 17 00:00:00 2001 From: patricklafrance Date: Fri, 7 Feb 2025 23:58:43 -0500 Subject: [PATCH] feat: Added a writeToDisk predefined option to Rsbuild dev config --- .changeset/sharp-weeks-watch.md | 5 +++++ docs/rsbuild/configure-dev.md | 15 +++++++++++++++ packages/rsbuild-configs/src/dev.ts | 5 ++++- packages/rsbuild-configs/tests/dev.test.ts | 8 ++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 .changeset/sharp-weeks-watch.md diff --git a/.changeset/sharp-weeks-watch.md b/.changeset/sharp-weeks-watch.md new file mode 100644 index 00000000..d7ff2430 --- /dev/null +++ b/.changeset/sharp-weeks-watch.md @@ -0,0 +1,5 @@ +--- +"@workleap/rsbuild-configs": minor +--- + +Added a new `writeToDisk` predefined option for the dev config. diff --git a/docs/rsbuild/configure-dev.md b/docs/rsbuild/configure-dev.md index 84a1d513..577fbe6e 100644 --- a/docs/rsbuild/configure-dev.md +++ b/docs/rsbuild/configure-dev.md @@ -384,6 +384,21 @@ export default defineDevConfig({ }); ``` +### `writeToDisk` + +- **Type**: `true` +- **Default**: `undefined` + +Whether or not to [write the build output](https://rsbuild.dev/config/dev/write-to-disk) from the development server to the disk. + +```ts !#4 rsbuild.dev.ts +import { defineDevConfig } from "@workleap/rsbuild-configs"; + +export default defineDevConfig({ + writeToDisk: true +}); +``` + ### `react` - **Type**: `false` or `(defaultOptions: PluginReactOptions) => PluginReactOptions` diff --git a/packages/rsbuild-configs/src/dev.ts b/packages/rsbuild-configs/src/dev.ts index dc01393a..1101af28 100644 --- a/packages/rsbuild-configs/src/dev.ts +++ b/packages/rsbuild-configs/src/dev.ts @@ -24,6 +24,7 @@ export interface DefineDevConfigOptions { fastRefresh?: boolean; sourceMap?: false | SourceMap; overlay?: false; + writeToDisk?: true; react?: false | DefineDevDefineReactPluginConfigFunction; svgr? : false | DefineDevSvgrPluginConfigFunction; environmentVariables?: Record; @@ -62,6 +63,7 @@ export function defineDevConfig(options: DefineDevConfigOptions = {}) { css: true }, overlay, + writeToDisk, react = defaultDefineReactPluginConfig, svgr = defineSvgrPluginConfig, // Using an empty object literal as the default value to ensure @@ -79,7 +81,8 @@ export function defineDevConfig(options: DefineDevConfigOptions = {}) { hmr: hmr || fastRefresh, client: (overlay === false || fastRefresh) ? { overlay: false - } : undefined + } : undefined, + writeToDisk }, server: { https: isBoolean(https) ? undefined : https, diff --git a/packages/rsbuild-configs/tests/dev.test.ts b/packages/rsbuild-configs/tests/dev.test.ts index fa2854dc..fd816716 100644 --- a/packages/rsbuild-configs/tests/dev.test.ts +++ b/packages/rsbuild-configs/tests/dev.test.ts @@ -294,6 +294,14 @@ test("when overlay is false, react plugin fast refresh overlay is disabled", () expect(isOverlayDisabled).toBeTruthy(); }); +test("when writeToDisk is true, the dev.writeToDisk option is true", () => { + const result = defineDevConfig({ + writeToDisk: true + }); + + expect(result.dev?.writeToDisk).toBeTruthy(); +}); + test("when react is false, the react plugin is not included", () => { const result = defineDevConfig({ react: false