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)