Skip to content

Commit 10fc603

Browse files
authored
perf: drop the babel dependency (#843)
1 parent ffef7a9 commit 10fc603

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed

.changeset/neat-jars-listen.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@opennextjs/cloudflare": patch
3+
---
4+
5+
perf: drop the babel dependency

packages/cloudflare/src/cli/build/bundle-server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { inlineFindDir } from "./patches/plugins/find-dir.js";
1616
import { patchInstrumentation } from "./patches/plugins/instrumentation.js";
1717
import { inlineLoadManifest } from "./patches/plugins/load-manifest.js";
1818
import { patchNextServer } from "./patches/plugins/next-server.js";
19+
import { patchNodeEnvironment } from "./patches/plugins/node-environment.js";
1920
import { patchResolveCache } from "./patches/plugins/open-next.js";
2021
import { handleOptionalDependencies } from "./patches/plugins/optional-deps.js";
2122
import { patchPagesRouterContext } from "./patches/plugins/pages-router-context.js";
@@ -107,6 +108,7 @@ export async function bundleServer(buildOpts: BuildOptions, projectOpts: Project
107108
patchRouteModules(updater, buildOpts),
108109
patchDepdDeprecations(updater),
109110
patchResolveCache(updater, buildOpts),
111+
patchNodeEnvironment(updater),
110112
// Apply updater updates, must be the last plugin
111113
updater.plugin,
112114
] as Plugin[],
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { describe, expect, test } from "vitest";
2+
3+
import { computePatchDiff } from "../../utils/test-patch.js";
4+
import { errorInspectRule } from "./node-environment.js";
5+
6+
describe("NodeEnvironment", () => {
7+
const code = `
8+
// This file should be imported before any others. It sets up the environment
9+
// for later imports to work properly.
10+
"use strict";
11+
Object.defineProperty(exports, "__esModule", {
12+
value: true
13+
});
14+
require("./node-environment-baseline");
15+
require("./node-environment-extensions/error-inspect");
16+
require("./node-environment-extensions/random");
17+
require("./node-environment-extensions/date");
18+
require("./node-environment-extensions/web-crypto");
19+
require("./node-environment-extensions/node-crypto");
20+
if (process.env.NODE_ENV === 'development') {
21+
require('./node-environment-extensions/console-dev');
22+
}
23+
24+
//# sourceMappingURL=node-environment.js.map
25+
`;
26+
27+
test("error inspect", () => {
28+
expect(computePatchDiff("node-environment.js", code, errorInspectRule)).toMatchInlineSnapshot(`
29+
"Index: node-environment.js
30+
===================================================================
31+
--- node-environment.js
32+
+++ node-environment.js
33+
@@ -1,13 +1,13 @@
34+
-
35+
// This file should be imported before any others. It sets up the environment
36+
// for later imports to work properly.
37+
"use strict";
38+
Object.defineProperty(exports, "__esModule", {
39+
value: true
40+
});
41+
require("./node-environment-baseline");
42+
-require("./node-environment-extensions/error-inspect");
43+
+// Removed by OpenNext
44+
+// require("./node-environment-extensions/error-inspect");
45+
require("./node-environment-extensions/random");
46+
require("./node-environment-extensions/date");
47+
require("./node-environment-extensions/web-crypto");
48+
require("./node-environment-extensions/node-crypto");
49+
"
50+
`);
51+
});
52+
});
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Remove a dependency on Babel by dropping the require of error-inspect
3+
*/
4+
5+
import { patchCode } from "@opennextjs/aws/build/patch/astCodePatcher.js";
6+
import type { ContentUpdater, Plugin } from "@opennextjs/aws/plugins/content-updater.js";
7+
import { getCrossPlatformPathRegex } from "@opennextjs/aws/utils/regex.js";
8+
9+
export function patchNodeEnvironment(updater: ContentUpdater): Plugin {
10+
return updater.updateContent("node-environment", [
11+
{
12+
filter: getCrossPlatformPathRegex(String.raw`/next/dist/server/node-environment\.js$`, {
13+
escape: false,
14+
}),
15+
contentFilter: /error-inspect/,
16+
callback: async ({ contents }) => patchCode(contents, errorInspectRule),
17+
},
18+
]);
19+
}
20+
21+
/**
22+
* Drops `require("./node-environment-extensions/error-inspect");`
23+
*/
24+
export const errorInspectRule = `
25+
rule:
26+
pattern: require("./node-environment-extensions/error-inspect");
27+
fix: |-
28+
// Removed by OpenNext
29+
// require("./node-environment-extensions/error-inspect");
30+
`;

0 commit comments

Comments
 (0)