diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index a362fc124c4150..b405bc56542848 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -1101,10 +1101,17 @@ UrlRewritePostcssPlugin.postcss = true function rewriteCssUrls( css: string, - replacer: CssUrlReplacer + replacer: CssUrlReplacer, + file?: string ): Promise { return asyncReplace(css, cssUrlRE, async (match) => { const [matched, rawUrl] = match + const inLess = file?.endsWith('.less') + const inSass = file?.endsWith('.sass') + const inScss = file?.endsWith('.scss') + if (inLess && rawUrl.startsWith('@') || (inSass || inScss) && rawUrl.startsWith('$')) { + return `url('${rawUrl}')` + } return await doUrlReplace(rawUrl, matched, replacer) }) } @@ -1478,7 +1485,7 @@ async function rebaseUrls( } if (hasUrls) { - rebased = await rewriteCssUrls(rebased || content, rebaseFn) + rebased = await rewriteCssUrls(rebased || content, rebaseFn, file) } if (hasDataUris) {