Skip to content

Commit

Permalink
refactor: correct logic
Browse files Browse the repository at this point in the history
  • Loading branch information
PeachScript committed Apr 7, 2024
1 parent 7a56401 commit 5d2cbbc
Showing 1 changed file with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions packages/preset-umi/src/features/ssr/ssr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export default (api: IApi) => {
const webpackBuilder: typeof import('./webpack/webpack') = importLazy(
require.resolve('./webpack/webpack'),
);
let serverBuildTarget: string;

api.describe({
key: 'ssr',
Expand Down Expand Up @@ -50,23 +51,36 @@ export default (api: IApi) => {
logger.warn(`SSR feature is in beta, may be unstable`);
});

api.modifyConfig((memo) => {
// define SSR_BUILD_TARGET to strip useless logic
memo.define ??= {};
memo.define.SSR_BUILD_TARGET =
api.config.ssr.serverBuildTarget || 'express';
api.modifyDefaultConfig((memo) => {
if (serverBuildTarget === 'worker') {
const oReactDom = memo.alias['react-dom'];

// put react-dom after react-dom/server
delete memo.alias['react-dom'];

if (api.config.serverBuildTarget === 'worker') {
// use browser version of react-dom/server for worker mode
// ref: https://github.com/facebook/react/blob/f86afca090b668d8be10b642750844759768d1ad/packages/react-server-dom-webpack/package.json#L52
memo.alias['react-dom/server$'] = winPath(
join(memo.alias['react-dom'], 'server.browser.js'),
join(
api.service.configDefaults.alias['react-dom'],
'server.browser.js',
),
);
memo.alias['react-dom'] = oReactDom;
}

return memo;
});

api.modifyConfig((memo) => {
// define SSR_BUILD_TARGET to strip useless logic
memo.define ??= {};
serverBuildTarget = memo.define['process.env.SSR_BUILD_TARGET'] =
memo.ssr.serverBuildTarget || 'express';

return memo;
});

api.addMiddlewares(() => [
async (req, res, next) => {
const modulePath = absServerBuildPath(api);
Expand Down

0 comments on commit 5d2cbbc

Please sign in to comment.