Refactor entries generation in hot-reloader (#34733)

* refactor entries generation of hot-reloader

* change parameter name
This commit is contained in:
Shu Ding 2022-02-24 23:19:53 +01:00 committed by GitHub
parent fbb8536956
commit ceecf91225
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 37 deletions

View file

@ -117,6 +117,8 @@ export function createEntrypoints(
Object.keys(config.publicRuntimeConfig).length > 0 ||
Object.keys(config.serverRuntimeConfig).length > 0
const edgeRuntime = config.experimental.runtime === 'edge'
const defaultServerlessOptions = {
absoluteAppPath: pages['/_app'],
absoluteDocumentPath: pages['/_document'],
@ -157,8 +159,6 @@ export function createEntrypoints(
const isCustomError = isCustomErrorPage(page)
const isFlight = isFlightPage(config, absolutePagePath)
const edgeRuntime = config.experimental.runtime === 'edge'
if (page.match(MIDDLEWARE_ROUTE)) {
const loaderOpts: MiddlewareLoaderOptions = {
absolutePagePath: pages[page],

View file

@ -1111,23 +1111,23 @@ export function getRawPageExtensions(pageExtensions: string[]): string[] {
export function isFlightPage(
nextConfig: NextConfigComplete,
pagePath: string
filePath: string
): boolean {
if (
!(
nextConfig.experimental.serverComponents &&
nextConfig.experimental.runtime
)
)
) {
return false
}
const rawPageExtensions = getRawPageExtensions(
nextConfig.pageExtensions || []
)
const isRscPage = rawPageExtensions.some((ext) => {
return new RegExp(`\\.server\\.${ext}$`).test(pagePath)
return rawPageExtensions.some((ext) => {
return filePath.endsWith(`.server.${ext}`)
})
return isRscPage
}
export function getUnresolvedModuleFromError(

View file

@ -477,8 +477,6 @@ export default class HotReloader {
return
}
const isApiRoute = page.match(API_ROUTE)
if (!isClientCompilation && isMiddleware) {
return
}
@ -491,18 +489,15 @@ export default class HotReloader {
return
}
const isApiRoute = page.match(API_ROUTE)
const isCustomError = isCustomErrorPage(page)
const isReserved = isReservedPage(page)
const isServerComponent =
this.hasServerComponents &&
isFlightPage(this.config, absolutePagePath)
const isEdgeSSRPage = this.runtime === 'edge' && !isApiRoute
if (
isNodeServerCompilation &&
this.runtime === 'edge' &&
!isApiRoute &&
!isCustomError
) {
if (isNodeServerCompilation && isEdgeSSRPage && !isCustomError) {
return
}
@ -512,28 +507,34 @@ export default class HotReloader {
absolutePagePath,
}
if (isClientCompilation && isMiddleware) {
entrypoints[bundlePath] = finalizeEntrypoint({
name: bundlePath,
value: `next-middleware-loader?${stringify(pageLoaderOpts)}!`,
isServer: false,
isMiddleware: true,
})
} else if (isClientCompilation) {
entrypoints[bundlePath] = finalizeEntrypoint({
name: bundlePath,
value: `next-client-pages-loader?${stringify(pageLoaderOpts)}!`,
isServer: false,
})
if (isClientCompilation) {
if (isMiddleware) {
// Middleware
entrypoints[bundlePath] = finalizeEntrypoint({
name: bundlePath,
value: `next-middleware-loader?${stringify(pageLoaderOpts)}!`,
isServer: false,
isMiddleware: true,
})
} else {
// A page route
entrypoints[bundlePath] = finalizeEntrypoint({
name: bundlePath,
value: `next-client-pages-loader?${stringify(
pageLoaderOpts
)}!`,
isServer: false,
})
if (isServerComponent) {
ssrEntries.set(bundlePath, { requireFlightManifest: true })
} else if (
this.runtime === 'edge' &&
!isReserved &&
!isCustomError
) {
ssrEntries.set(bundlePath, { requireFlightManifest: false })
// Tell the middleware plugin of the client compilation
// that this route is a page.
if (isEdgeSSRPage) {
if (isServerComponent) {
ssrEntries.set(bundlePath, { requireFlightManifest: true })
} else if (!isCustomError && !isReserved) {
ssrEntries.set(bundlePath, { requireFlightManifest: false })
}
}
}
} else if (isEdgeServerCompilation) {
if (!isReserved) {
@ -555,7 +556,7 @@ export default class HotReloader {
isEdgeServer: true,
})
}
} else {
} else if (isNodeServerCompilation) {
let request = relative(config.context!, absolutePagePath)
if (!isAbsolute(request) && !request.startsWith('../')) {
request = `./${request}`