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);