Skip to content

Commit db8bd41

Browse files
authored
fix(css): resolve relative paths in sass, revert #20300 (#20349)
1 parent 89961a9 commit db8bd41

File tree

2 files changed

+20
-29
lines changed

2 files changed

+20
-29
lines changed

packages/vite/src/node/plugins/css.ts

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2433,31 +2433,23 @@ const makeScssWorker = (
24332433
return unquotedUrl.startsWith('#{')
24342434
}
24352435

2436-
const createInternalImporter = (
2437-
isForRelative: boolean,
2438-
): Sass.Importer<'async'> => ({
2436+
const internalImporter: Sass.Importer<'async'> = {
24392437
async canonicalize(url, context) {
2440-
if (isForRelative) {
2441-
// sass passes resolved paths for importer passed to `importer` option
2442-
const resolved = new URL(url, context.containingUrl ?? undefined)
2443-
if (fs.existsSync(resolved)) return resolved
2444-
} else {
2445-
const importer = context.containingUrl
2446-
? fileURLToPath(context.containingUrl)
2447-
: options.filename
2448-
const resolved = await resolvers.sass(
2449-
environment,
2450-
url,
2451-
cleanScssBugUrl(importer),
2452-
)
2453-
if (
2454-
resolved &&
2455-
(resolved.endsWith('.css') ||
2456-
resolved.endsWith('.scss') ||
2457-
resolved.endsWith('.sass'))
2458-
) {
2459-
return pathToFileURL(resolved)
2460-
}
2438+
const importer = context.containingUrl
2439+
? fileURLToPath(context.containingUrl)
2440+
: options.filename
2441+
const resolved = await resolvers.sass(
2442+
environment,
2443+
url,
2444+
cleanScssBugUrl(importer),
2445+
)
2446+
if (
2447+
resolved &&
2448+
(resolved.endsWith('.css') ||
2449+
resolved.endsWith('.scss') ||
2450+
resolved.endsWith('.sass'))
2451+
) {
2452+
return pathToFileURL(resolved)
24612453
}
24622454
return null
24632455
},
@@ -2480,13 +2472,12 @@ const makeScssWorker = (
24802472
result.contents ?? (await fsp.readFile(result.file, 'utf-8'))
24812473
return { contents, syntax, sourceMapUrl: canonicalUrl }
24822474
},
2483-
})
2484-
2475+
}
24852476
sassOptions.importers = [
24862477
...(sassOptions.importers ?? []),
2487-
createInternalImporter(false),
2478+
internalImporter,
24882479
]
2489-
sassOptions.importer ??= createInternalImporter(true)
2480+
sassOptions.importer ??= internalImporter
24902481

24912482
const result = await compiler.compileStringAsync(data, sassOptions)
24922483
return {

playground/css/vite.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default defineConfig({
6464
resolve: {
6565
alias: [
6666
{ find: '=', replacement: __dirname },
67-
{ find: /=replace\/(.*)/, replacement: `${__dirname}/$1` },
67+
{ find: /^=replace\/(.*)/, replacement: `${__dirname}/$1` },
6868
{ find: 'spacefolder', replacement: __dirname + '/folder with space' },
6969
{ find: '#alias', replacement: __dirname + '/aliased/foo.css' },
7070
{

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy