From f25b4ed914dedc5c3b53cfb578a9ab9f106e5d47 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Fri, 29 Mar 2024 17:50:43 +0900 Subject: [PATCH 1/3] fix(css): unknown file error happened with lightningcss --- packages/vite/src/node/plugins/css.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index 484630645060f5..928a5802cf1e04 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -50,6 +50,7 @@ import { createSerialPromiseQueue, emptyCssComments, encodeURIPath, + escapeRegex, generateCodeFrame, getHash, getPackageManagerCommand, @@ -2754,12 +2755,12 @@ async function compileLightningCSS( switch (dep.type) { case 'url': if (skipUrlReplacer(dep.url)) { - css = css.replace(dep.placeholder, dep.url) + css = css.replace(dep.placeholder, escapeRegex(dep.url)) break } deps.add(dep.url) if (urlReplacer) { - css = css.replace(dep.placeholder, await urlReplacer(dep.url, id)) + css = css.replace(dep.placeholder, escapeRegex(await urlReplacer(dep.url, id))) } break default: From dd3c94818ebb99c69b224c08566e4f424ddc9564 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Fri, 29 Mar 2024 17:59:19 +0900 Subject: [PATCH 2/3] fix: use different function --- packages/vite/src/node/plugins/css.ts | 6 +++--- packages/vite/src/node/utils.ts | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index 928a5802cf1e04..fc6fd8c3afd5a0 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -50,7 +50,7 @@ import { createSerialPromiseQueue, emptyCssComments, encodeURIPath, - escapeRegex, + escapeReplaceValue, generateCodeFrame, getHash, getPackageManagerCommand, @@ -2755,12 +2755,12 @@ async function compileLightningCSS( switch (dep.type) { case 'url': if (skipUrlReplacer(dep.url)) { - css = css.replace(dep.placeholder, escapeRegex(dep.url)) + css = css.replace(dep.placeholder, escapeReplaceValue(dep.url)) break } deps.add(dep.url) if (urlReplacer) { - css = css.replace(dep.placeholder, escapeRegex(await urlReplacer(dep.url, id))) + css = css.replace(dep.placeholder, escapeReplaceValue(await urlReplacer(dep.url, id))) } break default: diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 90fa8daa038b74..81a4e27f64b82a 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -1321,6 +1321,10 @@ export function escapeRegex(str: string): string { return str.replace(escapeRegexRE, '\\$&') } +export function escapeReplaceValue(str: string): string { + return str.replaceAll('$', '$$$$' /* this is escaped $$ */) +} + type CommandType = 'install' | 'uninstall' | 'update' export function getPackageManagerCommand( type: CommandType = 'install', From d85dc3b93344dc9cb1075e41ecd3395f19c937b1 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Fri, 29 Mar 2024 18:13:22 +0900 Subject: [PATCH 3/3] refactor: remove escapeReplaceValue --- packages/vite/src/node/plugins/css.ts | 6 +++--- packages/vite/src/node/utils.ts | 4 ---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index fc6fd8c3afd5a0..90dbb6352378bc 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -50,7 +50,6 @@ import { createSerialPromiseQueue, emptyCssComments, encodeURIPath, - escapeReplaceValue, generateCodeFrame, getHash, getPackageManagerCommand, @@ -2755,12 +2754,13 @@ async function compileLightningCSS( switch (dep.type) { case 'url': if (skipUrlReplacer(dep.url)) { - css = css.replace(dep.placeholder, escapeReplaceValue(dep.url)) + css = css.replace(dep.placeholder, () => dep.url) break } deps.add(dep.url) if (urlReplacer) { - css = css.replace(dep.placeholder, escapeReplaceValue(await urlReplacer(dep.url, id))) + const replaceUrl = await urlReplacer(dep.url, id) + css = css.replace(dep.placeholder, () => replaceUrl) } break default: diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 81a4e27f64b82a..90fa8daa038b74 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -1321,10 +1321,6 @@ export function escapeRegex(str: string): string { return str.replace(escapeRegexRE, '\\$&') } -export function escapeReplaceValue(str: string): string { - return str.replaceAll('$', '$$$$' /* this is escaped $$ */) -} - type CommandType = 'install' | 'uninstall' | 'update' export function getPackageManagerCommand( type: CommandType = 'install',