From 56bb1ee81e7c6de750c5a4779ee059666408074c Mon Sep 17 00:00:00 2001 From: HomyeeKing Date: Mon, 20 Jan 2025 15:51:33 +0800 Subject: [PATCH] feat: allow userConfig --- packages/ice/src/service/serverCompiler.ts | 2 +- .../ice/src/service/webpackServerCompiler/compiler.ts | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/ice/src/service/serverCompiler.ts b/packages/ice/src/service/serverCompiler.ts index 9d4956911b..d37c42f8b1 100644 --- a/packages/ice/src/service/serverCompiler.ts +++ b/packages/ice/src/service/serverCompiler.ts @@ -103,7 +103,6 @@ export function createServerCompiler(options: Options) { const externals = task.config?.externals || {}; const sourceMap = task.config?.sourceMap; const dev = command === 'start'; - // Filter empty alias. const { ignores, alias } = filterAlias(task.config?.alias || {}); @@ -273,6 +272,7 @@ export function createServerCompiler(options: Options) { new ModifyRequirePlugin(), ].filter(Boolean), rootDir, + userServerConfig: server, }); esbuildResult = (await webpackServerCompiler.build())?.compilation; }(buildOptions); diff --git a/packages/ice/src/service/webpackServerCompiler/compiler.ts b/packages/ice/src/service/webpackServerCompiler/compiler.ts index 7f3b7f7f2d..cb8c0a7b57 100644 --- a/packages/ice/src/service/webpackServerCompiler/compiler.ts +++ b/packages/ice/src/service/webpackServerCompiler/compiler.ts @@ -80,6 +80,8 @@ export class WebpackServerCompiler { } private createWebpackConfig(options: any): webpack.Configuration { + const { userServerConfig } = options; + const { webpackConfig = {} } = userServerConfig; const cssRules = [ ['css'], [ @@ -112,7 +114,7 @@ export class WebpackServerCompiler { const cssChunkFilename = undefined; for (const key of Object.keys(options.alias)) { - if ((options.alias[key]).startsWith('./')) { + if (options.alias[key].startsWith('./')) { options.alias[key] = path.resolve(options.rootDir, options.alias[key]); } } @@ -156,6 +158,7 @@ export class WebpackServerCompiler { extractComments: false, }), ], + ...webpackConfig.optimization, }, resolve: { alias: options.alias, @@ -190,7 +193,8 @@ export class WebpackServerCompiler { // available options: https://github.com/evanw/esbuild/blob/88821b7e7d46737f633120f91c65f662eace0bcf/lib/shared/types.ts#L158-L172 options: { target: options.target, - format: options.format, + // make sure tree shaking is worked + format: 'esm', loader: 'tsx', jsx: options.jsx, jsxImportSource: '@ice/runtime/react', @@ -222,6 +226,7 @@ export class WebpackServerCompiler { // If the warning is triggered, it seen to be unactionable for the user, ignoreOrder: true, }), + ...webpackConfig.plugins, ], stats: { errorDetails: true,