Skip to content

Commit d977253

Browse files
authored
fix(build): avoid replacing unexpected words (#3671)
1 parent d1eea57 commit d977253

6 files changed

Lines changed: 28 additions & 2 deletions

File tree

src/build/config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ export function baseBuildConfig(nitro: Nitro) {
4848
_tasks: nitro.options.experimental.tasks,
4949
};
5050

51+
// https://github.com/rollup/plugins/tree/master/packages/replace#delimiters
52+
const replaceDelimiters: [string, string] = [
53+
String.raw`\b`,
54+
String.raw`(?![\w.$])`,
55+
];
56+
5157
const replacements = {
5258
"typeof window": '"undefined"',
5359
_import_meta_url_: "import.meta.url",
@@ -105,6 +111,7 @@ export function baseBuildConfig(nitro: Nitro) {
105111
isNodeless,
106112
buildEnvVars,
107113
staticFlags,
114+
replaceDelimiters,
108115
replacements,
109116
env,
110117
aliases,

src/build/rolldown/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export const getRolldownConfig = (nitro: Nitro): RolldownOptions => {
3636
...(baseBuildPlugins(nitro, base) as RolldownPlugin[]),
3737
// https://github.com/rolldown/rolldown/issues/4257
3838
replace({
39+
delimiters: base.replaceDelimiters,
3940
preventAssignment: true,
4041
values: base.replacements,
4142
}) as RolldownPlugin,

src/build/rollup/config.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ export const getRollupConfig = (nitro: Nitro): RollupConfig => {
4747
...nitro.options.esbuild?.options,
4848
}),
4949
alias({ entries: base.aliases }),
50-
replace({ preventAssignment: true, values: base.replacements }),
50+
replace({
51+
delimiters: base.replaceDelimiters,
52+
preventAssignment: true,
53+
values: base.replacements,
54+
}),
5155
nodeResolve({
5256
extensions: base.extensions,
5357
preferBuiltins: !!nitro.options.node,

src/build/vite/rollup.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ export const getViteRollupConfig = (
5454
virtualBundlePlugin(ctx._serviceBundles),
5555
...baseBuildPlugins(nitro, base),
5656
alias({ entries: base.aliases }),
57-
replace({ preventAssignment: true, values: base.replacements }),
57+
replace({
58+
delimiters: base.replaceDelimiters,
59+
preventAssignment: true,
60+
values: base.replacements,
61+
}),
5862
inject(base.env.inject),
5963
].filter(Boolean) as RollupPlugin[],
6064
treeshake: {

test/fixture/routes/replace.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function foo(options) {
2+
const { window: window$1 = globalThis } = options;
3+
4+
return typeof window$1 === "function";
5+
}

test/presets/vercel.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ describe("nitro:preset:vercel", async () => {
174174
"dest": "/route-group",
175175
"src": "/route-group",
176176
},
177+
{
178+
"dest": "/replace",
179+
"src": "/replace",
180+
},
177181
{
178182
"dest": "/raw",
179183
"src": "/raw",
@@ -550,6 +554,7 @@ describe("nitro:preset:vercel", async () => {
550554
"functions/prerender-custom.html.func (symlink)",
551555
"functions/prerender.func (symlink)",
552556
"functions/raw.func (symlink)",
557+
"functions/replace.func (symlink)",
553558
"functions/route-group.func (symlink)",
554559
"functions/rules/[...slug].func (symlink)",
555560
"functions/rules/_/cached/[...]-isr.func (symlink)",

0 commit comments

Comments
 (0)