Skip to content

Commit 3dc3ab8

Browse files
Fix Sass ESM deprecation handling in build
Resolve the Sass implementation from the ESM module namespace before falling back to the default export. This avoids triggering the deprecated default-export access in sass and sass-embedded while preserving the existing fallback order and build behavior.
1 parent a422ec1 commit 3dc3ab8

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

build.mjs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,22 @@ const resolveSymlinks = getBooleanEnv(process.env.BUILD_RESOLVE_SYMLINKS, false)
8585

8686
// Cache and resolve Sass implementation once per process
8787
let sassImplPromise
88+
function resolveSassImplementation(mod) {
89+
if (mod && typeof mod.info === 'string') return mod
90+
if (mod?.default && typeof mod.default.info === 'string') return mod.default
91+
return mod
92+
}
93+
8894
async function getSassImplementation() {
8995
if (!sassImplPromise) {
9096
sassImplPromise = (async () => {
9197
try {
9298
const mod = await import('sass-embedded')
93-
return mod.default || mod
99+
return resolveSassImplementation(mod)
94100
} catch (e1) {
95101
try {
96102
const mod = await import('sass')
97-
return mod.default || mod
103+
return resolveSassImplementation(mod)
98104
} catch (e2) {
99105
console.error('[build] Failed to load sass-embedded:', e1)
100106
console.error('[build] Failed to load sass:', e2)

0 commit comments

Comments
 (0)