From b472ad47b569ca99f52220838aab59146912ddfd Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 31 Oct 2025 21:49:37 +0800 Subject: [PATCH 1/2] test(e2e): add tests to verify env mode command handling --- e2e/cases/cli/function-config/index.test.ts | 43 ++++++++++++++----- .../cli/function-config/rsbuild.config.ts | 8 ++-- e2e/cases/cli/function-config/src/index.js | 2 +- examples/vanilla/rsbuild.config.ts | 7 ++- 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/e2e/cases/cli/function-config/index.test.ts b/e2e/cases/cli/function-config/index.test.ts index b3dc3b912b..747b5d8078 100644 --- a/e2e/cases/cli/function-config/index.test.ts +++ b/e2e/cases/cli/function-config/index.test.ts @@ -1,19 +1,42 @@ import path from 'node:path'; -import { expect, readDirContents, rspackTest } from '@e2e/helper'; +import { + expect, + getFileContent, + readDirContents, + rspackTest, +} from '@e2e/helper'; import { remove } from 'fs-extra'; +const distDir = path.join(__dirname, 'dist'); + rspackTest( 'should support exporting a function from the config file', async ({ execCliSync }) => { - const targetDir = path.join(__dirname, 'dist-production-build'); - - await remove(targetDir); - + await remove(distDir); execCliSync('build'); - - const outputs = await readDirContents(targetDir); - const outputFiles = Object.keys(outputs); - - expect(outputFiles.length > 1).toBeTruthy(); + const files = await readDirContents(distDir); + const content = getFileContent(files, 'index.js'); + expect(content.includes('production-production-build')).toBeTruthy(); }, ); + +rspackTest('should specify env as expected', async ({ execCliSync }) => { + await remove(distDir); + execCliSync('build', { + env: { + ...process.env, + NODE_ENV: 'development', + }, + }); + const files = await readDirContents(distDir); + const content = getFileContent(files, 'index.js'); + expect(content.includes('development-development-build')).toBeTruthy(); +}); + +rspackTest('should specify env mode as expected', async ({ execCliSync }) => { + await remove(distDir); + execCliSync('build --env-mode staging'); + const files = await readDirContents(distDir); + const content = getFileContent(files, 'index.js'); + expect(content.includes('production-staging-build')).toBeTruthy(); +}); diff --git a/e2e/cases/cli/function-config/rsbuild.config.ts b/e2e/cases/cli/function-config/rsbuild.config.ts index 1b1c91c1f1..9b9104e3ea 100644 --- a/e2e/cases/cli/function-config/rsbuild.config.ts +++ b/e2e/cases/cli/function-config/rsbuild.config.ts @@ -1,7 +1,9 @@ import { defineConfig } from '@rsbuild/core'; -export default defineConfig(({ env, command }) => ({ - output: { - distPath: `dist-${env}-${command}`, +export default defineConfig(({ env, command, envMode }) => ({ + source: { + define: { + DEFINED_VALUE: JSON.stringify(`${env}-${envMode}-${command}`), + }, }, })); diff --git a/e2e/cases/cli/function-config/src/index.js b/e2e/cases/cli/function-config/src/index.js index ddc67c9b01..a028b6a483 100644 --- a/e2e/cases/cli/function-config/src/index.js +++ b/e2e/cases/cli/function-config/src/index.js @@ -1 +1 @@ -console.log('hello!'); +console.log(DEFINED_VALUE); diff --git a/examples/vanilla/rsbuild.config.ts b/examples/vanilla/rsbuild.config.ts index 03f85e1cfb..2088a1bfa9 100644 --- a/examples/vanilla/rsbuild.config.ts +++ b/examples/vanilla/rsbuild.config.ts @@ -1,3 +1,8 @@ import { defineConfig } from '@rsbuild/core'; -export default defineConfig({}); +export default defineConfig((config) => { + const isProd = config.env === 'production'; + console.log('config.env', config.env); + console.log('isProd', isProd); + return {}; +}); From a60e542d13f28c96d7b80e1e9a2760fc9f14eb67 Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 31 Oct 2025 21:59:17 +0800 Subject: [PATCH 2/2] fix --- examples/vanilla/rsbuild.config.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/examples/vanilla/rsbuild.config.ts b/examples/vanilla/rsbuild.config.ts index 2088a1bfa9..03f85e1cfb 100644 --- a/examples/vanilla/rsbuild.config.ts +++ b/examples/vanilla/rsbuild.config.ts @@ -1,8 +1,3 @@ import { defineConfig } from '@rsbuild/core'; -export default defineConfig((config) => { - const isProd = config.env === 'production'; - console.log('config.env', config.env); - console.log('isProd', isProd); - return {}; -}); +export default defineConfig({});