Skip to content

Commit 74ede4d

Browse files
committed
Generate required-server-files.js
1 parent 1c0b865 commit 74ede4d

File tree

8 files changed

+36
-9
lines changed

8 files changed

+36
-9
lines changed

crates/next-api/src/app.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1543,6 +1543,9 @@ impl AppEndpoint {
15431543
rcstr!("server/middleware-build-manifest.js"),
15441544
rcstr!("server/interception-route-rewrite-manifest.js"),
15451545
];
1546+
if project.next_mode().await?.is_production() {
1547+
file_paths_from_root.insert(rcstr!("required-server-files.js"));
1548+
}
15461549
if emit_manifests == EmitManifests::Full {
15471550
file_paths_from_root.insert(rcstr!("server/next-font-manifest.js"));
15481551
};

crates/next-api/src/pages.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,6 +1441,16 @@ impl PageEndpoint {
14411441
fxindexset![]
14421442
};
14431443

1444+
if this
1445+
.pages_project
1446+
.project()
1447+
.next_mode()
1448+
.await?
1449+
.is_production()
1450+
{
1451+
file_paths_from_root.insert(rcstr!("required-server-files.js"));
1452+
}
1453+
14441454
let all_assets = assets.concatenate(*referenced_assets);
14451455
let assets_ref = assets.await?;
14461456

packages/next/src/build/index.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -621,9 +621,13 @@ async function writeRequiredServerFilesManifest(
621621
requiredServerFiles: RequiredServerFilesManifest
622622
) {
623623
await writeManifest(
624-
path.join(distDir, SERVER_FILES_MANIFEST),
624+
path.join(distDir, SERVER_FILES_MANIFEST + '.json'),
625625
requiredServerFiles
626626
)
627+
await writeFileUtf8(
628+
path.join(distDir, SERVER_FILES_MANIFEST + '.js'),
629+
`self.__SERVER_FILES_MANIFEST=${formatManifest(requiredServerFiles)}`
630+
)
627631
}
628632

629633
async function writeImagesManifest(
@@ -693,7 +697,10 @@ async function writeStandaloneDirectory(
693697

694698
for (const file of [
695699
...requiredServerFiles.files,
696-
path.join(requiredServerFiles.config.distDir, SERVER_FILES_MANIFEST),
700+
path.join(
701+
requiredServerFiles.config.distDir,
702+
SERVER_FILES_MANIFEST + '.json'
703+
),
697704
...loadedEnvFiles.reduce<string[]>((acc, envFile) => {
698705
if (['.env', '.env.production'].includes(envFile.path)) {
699706
acc.push(envFile.path)
@@ -1915,7 +1922,8 @@ export default async function build(
19151922
BUILD_ID_FILE,
19161923
path.join(SERVER_DIRECTORY, NEXT_FONT_MANIFEST + '.js'),
19171924
path.join(SERVER_DIRECTORY, NEXT_FONT_MANIFEST + '.json'),
1918-
SERVER_FILES_MANIFEST,
1925+
SERVER_FILES_MANIFEST + '.js',
1926+
SERVER_FILES_MANIFEST + '.json',
19191927
]
19201928
.filter(nonNullable)
19211929
.map((file) => path.join(config.distDir, file)),

packages/next/src/build/webpack/plugins/middleware-plugin.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
SERVER_REFERENCE_MANIFEST,
2323
INTERCEPTION_ROUTE_REWRITE_MANIFEST,
2424
DYNAMIC_CSS_MANIFEST,
25+
SERVER_FILES_MANIFEST,
2526
} from '../../../shared/lib/constants'
2627
import type { ProxyConfig } from '../../analysis/get-page-static-info'
2728
import type { Telemetry } from '../../../telemetry/storage'
@@ -133,6 +134,10 @@ function getEntryFiles(
133134
`server/${NEXT_FONT_MANIFEST}.js`,
134135
`server/${INTERCEPTION_ROUTE_REWRITE_MANIFEST}.js`
135136
)
137+
138+
if (!opts.dev) {
139+
files.push(`${SERVER_FILES_MANIFEST}.js`)
140+
}
136141
}
137142

138143
if (hasInstrumentationHook) {

packages/next/src/client/route-loader.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { ComponentType } from 'react'
22
import type { ProxyMatcher } from '../build/analysis/get-page-static-info'
3+
import type { RequiredServerFilesManifest } from '../build'
34
import getAssetPathFromRoute from '../shared/lib/router/utils/get-asset-path-from-route'
45
import { __unsafeCreateTrustedScriptURL } from './trusted-types'
56
import { requestIdleCallback } from './request-idle-callback'
@@ -16,6 +17,7 @@ declare global {
1617
interface Window {
1718
__BUILD_MANIFEST?: Record<string, string[]>
1819
__BUILD_MANIFEST_CB?: Function
20+
__SERVER_FILES_MANIFEST?: RequiredServerFilesManifest
1921
__MIDDLEWARE_MATCHERS?: ProxyMatcher[]
2022
__MIDDLEWARE_MANIFEST_CB?: Function
2123
__REACT_LOADABLE_MANIFEST?: any

packages/next/src/server/next.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ export class NextServer implements NextWrapperServer {
298298
path.join(
299299
/* turbopackIgnore: true */ dir,
300300
config.distDir,
301-
SERVER_FILES_MANIFEST
301+
SERVER_FILES_MANIFEST + '.json'
302302
)
303303
).config
304304

packages/next/src/server/route-modules/route-module.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,8 @@ export abstract class RouteModule<
223223
process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE
224224
),
225225
},
226-
serverFilesManifest: {
227-
config: (globalThis as any).nextConfig || {},
228-
} as any,
226+
serverFilesManifest:
227+
self.__SERVER_FILES_MANIFEST as any as RequiredServerFilesManifest,
229228
clientReferenceManifest: self.__RSC_MANIFEST?.[srcPage],
230229
serverActionsManifest: maybeJSONParse(self.__RSC_SERVER_MANIFEST),
231230
subresourceIntegrityManifest: maybeJSONParse(
@@ -337,7 +336,7 @@ export abstract class RouteModule<
337336
: loadManifestFromRelativePath<RequiredServerFilesManifest>({
338337
projectDir,
339338
distDir: this.distDir,
340-
manifest: SERVER_FILES_MANIFEST,
339+
manifest: `${SERVER_FILES_MANIFEST}.json`,
341340
}),
342341
this.isDev
343342
? 'development'

packages/next/src/shared/lib/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export const EXPORT_DETAIL = 'export-detail.json'
9797
export const PRERENDER_MANIFEST = 'prerender-manifest.json'
9898
export const ROUTES_MANIFEST = 'routes-manifest.json'
9999
export const IMAGES_MANIFEST = 'images-manifest.json'
100-
export const SERVER_FILES_MANIFEST = 'required-server-files.json'
100+
export const SERVER_FILES_MANIFEST = 'required-server-files'
101101
export const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'
102102
export const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'
103103
export const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST =

0 commit comments

Comments
 (0)