diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index 2899ea7771aab9..f1599fa0df92c3 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -68,21 +68,17 @@ export function definePlugin(config: ResolvedConfig): Plugin { const replacementsKeys = Object.keys(replacements) const pattern = replacementsKeys.length ? new RegExp( - // Do not allow preceding '.', but do allow preceding '...' for spread operations - '(? { return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&') }) .join('|') + - // Replacement key must be followed by: - // - end of a line - // - a char that can't be part of an identifier and isn't whitespace or an assignment - // - whitespace, as long as it's not followed by an assignment - // - anything following a dot (handles cases where replacement includes a trailing dot) - ')(?=$|[^\\p{L}\\p{N}_$\\s=]|(\\s+[^=\\s])|(?<=\\.).)', + // Mustn't be followed by a char that can be part of an identifier + // or an assignment (but allow equality operators) + ')(?![\\p{L}\\p{N}_$]|\\s*?=[^=])', 'gu' ) : null