Skip to content

Commit 2830693

Browse files
committed
refactor: extract warmer bundle
1 parent 3a9572d commit 2830693

File tree

2 files changed

+52
-49
lines changed

2 files changed

+52
-49
lines changed

packages/open-next/src/build.ts

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import fs from "node:fs";
2-
import path from "node:path";
3-
41
import {
52
buildNextjsApp,
63
setStandaloneBuildMode,
@@ -12,11 +9,11 @@ import { createImageOptimizationBundle } from "./build/createImageOptimizationBu
129
import { createMiddleware } from "./build/createMiddleware.js";
1310
import { createRevalidationBundle } from "./build/createRevalidationBundle.js";
1411
import { createServerBundle } from "./build/createServerBundle.js";
12+
import { createWarmerBundle } from "./build/createWarmerBundle.js";
1513
import { generateOutput } from "./build/generateOutput.js";
1614
import * as buildHelper from "./build/helper.js";
1715
import { printHeader } from "./build/utils.js";
1816
import logger from "./logger.js";
19-
import { openNextResolvePlugin } from "./plugins/resolve.js";
2017

2118
export type PublicFiles = {
2219
files: string[];
@@ -74,48 +71,3 @@ export async function build(
7471
await generateOutput(options);
7572
logger.info("OpenNext build complete.");
7673
}
77-
78-
async function createWarmerBundle(options: buildHelper.BuildOptions) {
79-
logger.info(`Bundling warmer function...`);
80-
81-
const { config, outputDir } = options;
82-
83-
// Create output folder
84-
const outputPath = path.join(outputDir, "warmer-function");
85-
fs.mkdirSync(outputPath, { recursive: true });
86-
87-
// Copy open-next.config.mjs into the bundle
88-
buildHelper.copyOpenNextConfig(options.buildDir, outputPath);
89-
90-
// Build Lambda code
91-
// note: bundle in OpenNext package b/c the adatper relys on the
92-
// "serverless-http" package which is not a dependency in user's
93-
// Next.js app.
94-
await buildHelper.esbuildAsync(
95-
{
96-
entryPoints: [
97-
path.join(options.openNextDistDir, "adapters", "warmer-function.js"),
98-
],
99-
external: ["next"],
100-
outfile: path.join(outputPath, "index.mjs"),
101-
plugins: [
102-
openNextResolvePlugin({
103-
overrides: {
104-
converter: config.warmer?.override?.converter ?? "dummy",
105-
wrapper: config.warmer?.override?.wrapper,
106-
},
107-
fnName: "warmer",
108-
}),
109-
],
110-
banner: {
111-
js: [
112-
"import { createRequire as topLevelCreateRequire } from 'module';",
113-
"const require = topLevelCreateRequire(import.meta.url);",
114-
"import bannerUrl from 'url';",
115-
"const __dirname = bannerUrl.fileURLToPath(new URL('.', import.meta.url));",
116-
].join(""),
117-
},
118-
},
119-
options,
120-
);
121-
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import fs from "node:fs";
2+
import path from "node:path";
3+
4+
import logger from "../logger.js";
5+
import { openNextResolvePlugin } from "../plugins/resolve.js";
6+
import * as buildHelper from "./helper.js";
7+
8+
export async function createWarmerBundle(options: buildHelper.BuildOptions) {
9+
logger.info(`Bundling warmer function...`);
10+
11+
const { config, outputDir } = options;
12+
13+
// Create output folder
14+
const outputPath = path.join(outputDir, "warmer-function");
15+
fs.mkdirSync(outputPath, { recursive: true });
16+
17+
// Copy open-next.config.mjs into the bundle
18+
buildHelper.copyOpenNextConfig(options.buildDir, outputPath);
19+
20+
// Build Lambda code
21+
// note: bundle in OpenNext package b/c the adatper relys on the
22+
// "serverless-http" package which is not a dependency in user's
23+
// Next.js app.
24+
await buildHelper.esbuildAsync(
25+
{
26+
entryPoints: [
27+
path.join(options.openNextDistDir, "adapters", "warmer-function.js"),
28+
],
29+
external: ["next"],
30+
outfile: path.join(outputPath, "index.mjs"),
31+
plugins: [
32+
openNextResolvePlugin({
33+
overrides: {
34+
converter: config.warmer?.override?.converter ?? "dummy",
35+
wrapper: config.warmer?.override?.wrapper,
36+
},
37+
fnName: "warmer",
38+
}),
39+
],
40+
banner: {
41+
js: [
42+
"import { createRequire as topLevelCreateRequire } from 'module';",
43+
"const require = topLevelCreateRequire(import.meta.url);",
44+
"import bannerUrl from 'url';",
45+
"const __dirname = bannerUrl.fileURLToPath(new URL('.', import.meta.url));",
46+
].join(""),
47+
},
48+
},
49+
options,
50+
);
51+
}

0 commit comments

Comments
 (0)