Skip to content

Commit b15e015

Browse files
authored
fix(rollup): resolve unenv paths with expected version (#3073)
1 parent 57bd74b commit b15e015

4 files changed

Lines changed: 64 additions & 34 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
"ultrahtml": "^1.5.3",
164164
"uncrypto": "^0.1.3",
165165
"unctx": "^2.4.1",
166-
"unenv": "2.0.0-rc.2",
166+
"unenv": "2.0.0-rc.3",
167167
"unimport": "^4.0.0",
168168
"unstorage": "^1.14.4",
169169
"untyped": "^1.5.2",

pnpm-lock.yaml

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/presets/cloudflare/unenv/preset.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,22 +45,33 @@ const resolvePresetRuntime = (m: string) => join(presetRuntimeDir, `${m}.mjs`);
4545
export const unenvCfPreset: Preset = {
4646
external: nodeCompatModules.map((m) => `node:${m}`),
4747
alias: {
48-
// <id> => node:<id>
49-
...Object.fromEntries(nodeCompatModules.map((m) => [m, `node:${m}`])),
50-
...Object.fromEntries(hybridNodeCompatModules.map((m) => [m, `node:${m}`])),
51-
// node:<id> => runtime/<id>.mjs (hybrid)
48+
// (native)
5249
...Object.fromEntries(
53-
hybridNodeCompatModules.map((m) => [
54-
`node:${m}`,
55-
resolvePresetRuntime(m === "sys" ? "util" : m),
50+
nodeCompatModules.flatMap((m) => [
51+
[m, `node:${m}`],
52+
[`node:${m}`, `node:${m}`],
5653
])
5754
),
55+
// (hybrid)
56+
...Object.fromEntries(
57+
hybridNodeCompatModules.flatMap((m) => {
58+
const resolved = resolvePresetRuntime(m);
59+
return [
60+
[`node:${m}`, resolved],
61+
[m, resolved],
62+
];
63+
})
64+
),
5865
sys: resolvePresetRuntime("util"),
5966
"node:sys": resolvePresetRuntime("util"),
6067
"node-mock-http/_polyfill/events": "node:events",
6168
"node-mock-http/_polyfill/buffer": "node:buffer",
6269
},
6370
inject: {
71+
// process: "TODO",
72+
// console: "TODO",
73+
Buffer: ["node:buffer", "Buffer"],
74+
"global.Buffer": ["node:buffer", "Buffer"],
6475
"globalThis.Buffer": ["node:buffer", "Buffer"],
6576
},
6677
};

src/rollup/config.ts

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { dirname, join, normalize, resolve } from "pathe";
2020
import type { Plugin } from "rollup";
2121
import { visualizer } from "rollup-plugin-visualizer";
2222
import { isTest, isWindows } from "std-env";
23-
import * as unenv from "unenv";
23+
import { defineEnv } from "unenv";
2424
import type { Preset } from "unenv";
2525
import unimportPlugin from "unimport/unplugin";
2626
import { rollup as unwasm } from "unwasm/plugin";
@@ -54,27 +54,46 @@ export const getRollupConfig = (nitro: Nitro): RollupConfig => {
5454
".jsx",
5555
];
5656

57-
const nodePreset = nitro.options.node === false ? unenv.nodeless : unenv.node;
58-
59-
const builtinPreset: Preset = {
60-
alias: {
61-
// General
62-
...(nitro.options.dev
63-
? {}
64-
: {
65-
debug: "unenv/npm/debug",
66-
}),
67-
...(nitro.options.node === false
68-
? {}
69-
: {
70-
"node-mock-http/_polyfill/events": "node:events",
71-
"node-mock-http/_polyfill/buffer": "node:buffer",
72-
}),
73-
...nitro.options.alias,
57+
const isNodeless = nitro.options.node === false;
58+
59+
const { env } = defineEnv({
60+
nodeCompat: isNodeless,
61+
resolve: true,
62+
presets: [
63+
isNodeless
64+
? {
65+
// Backward compatibility (remove in v2)
66+
// https://github.com/unjs/unenv/pull/427
67+
inject: {
68+
performance: "unenv/polyfill/performance",
69+
},
70+
polyfill: [
71+
"unenv/polyfill/globalthis-global",
72+
"unenv/polyfill/process",
73+
"unenv/polyfill/performance",
74+
],
75+
}
76+
: {},
77+
nitro.options.unenv,
78+
],
79+
overrides: {
80+
alias: {
81+
// General
82+
...(nitro.options.dev
83+
? {}
84+
: {
85+
debug: "unenv/npm/debug",
86+
}),
87+
...(isNodeless
88+
? {}
89+
: {
90+
"node-mock-http/_polyfill/events": "node:events",
91+
"node-mock-http/_polyfill/buffer": "node:buffer",
92+
}),
93+
...nitro.options.alias,
94+
},
7495
},
75-
};
76-
77-
const env = unenv.env(nodePreset, builtinPreset, nitro.options.unenv);
96+
});
7897

7998
const buildServerDir = join(nitro.options.buildDir, "dist/server");
8099

0 commit comments

Comments
 (0)