diff --git a/packages/compat/webpack/src/build.ts b/packages/compat/webpack/src/build.ts index 98cbf254df..c7d3688345 100644 --- a/packages/compat/webpack/src/build.ts +++ b/packages/compat/webpack/src/build.ts @@ -53,7 +53,7 @@ export const build = async ( if (err) { reject(err); } else if (stats?.hasErrors()) { - reject(new Error('Webpack build failed!')); + reject(new Error('webpack build failed.')); } // If there is a compilation error, the close method should not be called. // Otherwise bundler may generate an invalid cache. diff --git a/packages/core/src/cli/commands.ts b/packages/core/src/cli/commands.ts index a29a8c9d36..6bcbe15c67 100644 --- a/packages/core/src/cli/commands.ts +++ b/packages/core/src/cli/commands.ts @@ -1,6 +1,7 @@ import cac, { type CAC, type Command } from 'cac'; import type { ConfigLoader } from '../config'; import { logger } from '../logger'; +import { RSPACK_BUILD_ERROR } from '../provider/build'; import { onBeforeRestartServer } from '../server/restart'; import type { RsbuildMode } from '../types'; import { init } from './init'; @@ -131,7 +132,12 @@ export function setupCommands(): void { } } } catch (err) { - logger.error('Failed to build.'); + const isRspackError = + err instanceof Error && err.message === RSPACK_BUILD_ERROR; + if (!isRspackError) { + logger.error('Failed to build.'); + } + logger.error(err); process.exit(1); } diff --git a/packages/core/src/provider/build.ts b/packages/core/src/provider/build.ts index d878b7c881..be956ac0a5 100644 --- a/packages/core/src/provider/build.ts +++ b/packages/core/src/provider/build.ts @@ -5,6 +5,8 @@ import type { Build, BuildOptions, Rspack } from '../types'; import { createCompiler } from './createCompiler'; import type { InitConfigsOptions } from './initConfigs'; +export const RSPACK_BUILD_ERROR = 'Rspack build failed.'; + export const build = async ( initOptions: InitConfigsOptions, { watch, compiler: customCompiler }: BuildOptions = {}, @@ -54,7 +56,7 @@ export const build = async ( if (err) { reject(err); } else if (stats?.hasErrors()) { - reject(new Error('Rspack build failed!')); + reject(new Error(RSPACK_BUILD_ERROR)); } // If there is a compilation error, the close method should not be called. // Otherwise the bundler may generate an invalid cache.