From d6e13543d74e3c0aef213d5776b4cf13ab96ab4e Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Tue, 19 Sep 2023 15:08:59 +0200 Subject: [PATCH] refactor --- packages/next/src/build/utils.ts | 6 ++++++ packages/next/src/build/webpack-config.ts | 23 +++++++++-------------- packages/next/src/lib/constants.ts | 10 +++++++++- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/next/src/build/utils.ts b/packages/next/src/build/utils.ts index d9c90d8158e00..2a9e2d045345e 100644 --- a/packages/next/src/build/utils.ts +++ b/packages/next/src/build/utils.ts @@ -2130,3 +2130,9 @@ export function isWebpackDefaultLayer( ): boolean { return layer === null || layer === undefined } + +export function isWebpackAppLayer( + layer: WebpackLayerName | null | undefined +): boolean { + return Boolean(layer && WEBPACK_LAYERS.GROUP.app.includes(layer as any)) +} diff --git a/packages/next/src/build/webpack-config.ts b/packages/next/src/build/webpack-config.ts index 9041573de370c..2e584e5d549b5 100644 --- a/packages/next/src/build/webpack-config.ts +++ b/packages/next/src/build/webpack-config.ts @@ -19,7 +19,11 @@ import { WEBPACK_RESOURCE_QUERIES, WebpackLayerName, } from '../lib/constants' -import { isWebpackDefaultLayer, isWebpackServerLayer } from './utils' +import { + isWebpackAppLayer, + isWebpackDefaultLayer, + isWebpackServerLayer, +} from './utils' import { CustomRoutes } from '../lib/load-custom-routes.js' import { isEdgeRuntime } from '../lib/is-edge-runtime' import { @@ -412,7 +416,7 @@ function createRSCAliases( } if (!opts.isEdgeServer) { - if (opts.layer === 'ssr') { + if (opts.layer === WEBPACK_LAYERS.serverSideRendering) { alias = Object.assign(alias, { 'react/jsx-runtime$': `next/dist/server/future/route-modules/app-page/vendored/shared/react-jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/server/future/route-modules/app-page/vendored/shared/react-jsx-dev-runtime`, @@ -421,7 +425,7 @@ function createRSCAliases( 'react-dom/server.edge$': `next/dist/server/future/route-modules/app-page/vendored/${opts.layer}/react-dom-server-edge`, 'react-server-dom-webpack/client.edge$': `next/dist/server/future/route-modules/app-page/vendored/${opts.layer}/react-server-dom-webpack-client-edge`, }) - } else if (opts.layer === 'rsc') { + } else if (opts.layer === WEBPACK_LAYERS.reactServerComponents) { alias = Object.assign(alias, { 'react/jsx-runtime$': `next/dist/server/future/route-modules/app-page/vendored/shared/react-jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/server/future/route-modules/app-page/vendored/shared/react-jsx-dev-runtime`, @@ -434,7 +438,7 @@ function createRSCAliases( } if (opts.isEdgeServer) { - if (opts.layer === 'rsc') { + if (opts.layer === WEBPACK_LAYERS.reactServerComponents) { alias[ 'react$' ] = `next/dist/compiled/react${bundledReactChannel}/react.shared-subset` @@ -1381,16 +1385,7 @@ export default async function getBaseWebpackConfig( return `commonjs next/dist/lib/import-next-warning` } - const isAppLayer = ( - [ - WEBPACK_LAYERS.reactServerComponents, - WEBPACK_LAYERS.serverSideRendering, - WEBPACK_LAYERS.appPagesBrowser, - WEBPACK_LAYERS.actionBrowser, - WEBPACK_LAYERS.appMetadataRoute, - WEBPACK_LAYERS.appRouteHandler, - ] as WebpackLayerName[] - ).includes(layer!) + const isAppLayer = isWebpackAppLayer(layer) // Relative requires don't need custom resolution, because they // are relative to requests we've already resolved here. diff --git a/packages/next/src/lib/constants.ts b/packages/next/src/lib/constants.ts index 0ec3d8c07f894..2a605586b817a 100644 --- a/packages/next/src/lib/constants.ts +++ b/packages/next/src/lib/constants.ts @@ -107,7 +107,7 @@ const WEBPACK_LAYERS_NAMES = { */ reactServerComponents: 'rsc', /** - * Server Side Rendering layer (ssr). + * Server Side Rendering layer for app (ssr). */ serverSideRendering: 'ssr', /** @@ -157,6 +157,14 @@ const WEBPACK_LAYERS = { WEBPACK_LAYERS_NAMES.middleware, WEBPACK_LAYERS_NAMES.api, ], + app: [ + WEBPACK_LAYERS_NAMES.reactServerComponents, + WEBPACK_LAYERS_NAMES.actionBrowser, + WEBPACK_LAYERS_NAMES.appMetadataRoute, + WEBPACK_LAYERS_NAMES.appRouteHandler, + WEBPACK_LAYERS_NAMES.serverSideRendering, + WEBPACK_LAYERS_NAMES.appPagesBrowser, + ], }, }