Skip to content

Commit dac7992

Browse files
authored
feat(css): format lightningcss error (#18818)
1 parent ec51115 commit dac7992

File tree

1 file changed

+66
-51
lines changed
  • packages/vite/src/node/plugins

1 file changed

+66
-51
lines changed

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

+66-51
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ import type {
3333
SassModernPreprocessBaseOptions,
3434
StylusPreprocessorBaseOptions,
3535
} from 'types/internal/cssPreprocessorOptions'
36+
import type {
37+
TransformAttributeResult as LightningCssTransformAttributeResult,
38+
TransformResult as LightningCssTransformResult,
39+
} from 'lightningcss'
3640
import { getCodeWithSourcemap, injectSourcesContent } from '../server/sourcemap'
3741
import type { EnvironmentModuleNode } from '../server/moduleGraph'
3842
import {
@@ -3114,60 +3118,71 @@ async function compileLightningCSS(
31143118
const toAbsolute = (filePath: string) =>
31153119
path.isAbsolute(filePath) ? filePath : path.join(config.root, filePath)
31163120

3117-
const res = styleAttrRE.test(id)
3118-
? (await importLightningCSS()).transformStyleAttribute({
3119-
filename,
3120-
code: Buffer.from(src),
3121-
targets: config.css?.lightningcss?.targets,
3122-
minify: config.isProduction && !!config.build.cssMinify,
3123-
analyzeDependencies: true,
3124-
})
3125-
: await (
3126-
await importLightningCSS()
3127-
).bundleAsync({
3128-
...config.css?.lightningcss,
3129-
filename,
3130-
resolver: {
3131-
read(filePath) {
3132-
if (filePath === filename) {
3133-
return src
3134-
}
3135-
// This happens with html-proxy (#13776)
3136-
if (!filePath.endsWith('.css')) {
3137-
return src
3138-
}
3139-
return fs.readFileSync(toAbsolute(filePath), 'utf-8')
3140-
},
3141-
async resolve(id, from) {
3142-
const publicFile = checkPublicFile(
3143-
id,
3144-
environment.getTopLevelConfig(),
3145-
)
3146-
if (publicFile) {
3147-
return publicFile
3148-
}
3121+
let res: LightningCssTransformAttributeResult | LightningCssTransformResult
3122+
try {
3123+
res = styleAttrRE.test(id)
3124+
? (await importLightningCSS()).transformStyleAttribute({
3125+
filename,
3126+
code: Buffer.from(src),
3127+
targets: config.css?.lightningcss?.targets,
3128+
minify: config.isProduction && !!config.build.cssMinify,
3129+
analyzeDependencies: true,
3130+
})
3131+
: await (
3132+
await importLightningCSS()
3133+
).bundleAsync({
3134+
...config.css?.lightningcss,
3135+
filename,
3136+
resolver: {
3137+
read(filePath) {
3138+
if (filePath === filename) {
3139+
return src
3140+
}
3141+
// This happens with html-proxy (#13776)
3142+
if (!filePath.endsWith('.css')) {
3143+
return src
3144+
}
3145+
return fs.readFileSync(toAbsolute(filePath), 'utf-8')
3146+
},
3147+
async resolve(id, from) {
3148+
const publicFile = checkPublicFile(
3149+
id,
3150+
environment.getTopLevelConfig(),
3151+
)
3152+
if (publicFile) {
3153+
return publicFile
3154+
}
31493155

3150-
const resolved = await getAtImportResolvers(
3151-
environment.getTopLevelConfig(),
3152-
).css(environment, id, toAbsolute(from))
3156+
const resolved = await getAtImportResolvers(
3157+
environment.getTopLevelConfig(),
3158+
).css(environment, id, toAbsolute(from))
31533159

3154-
if (resolved) {
3155-
deps.add(resolved)
3156-
return resolved
3157-
}
3158-
return id
3160+
if (resolved) {
3161+
deps.add(resolved)
3162+
return resolved
3163+
}
3164+
return id
3165+
},
31593166
},
3160-
},
3161-
minify: config.isProduction && !!config.build.cssMinify,
3162-
sourceMap:
3163-
config.command === 'build'
3164-
? !!config.build.sourcemap
3165-
: config.css?.devSourcemap,
3166-
analyzeDependencies: true,
3167-
cssModules: cssModuleRE.test(id)
3168-
? (config.css?.lightningcss?.cssModules ?? true)
3169-
: undefined,
3170-
})
3167+
minify: config.isProduction && !!config.build.cssMinify,
3168+
sourceMap:
3169+
config.command === 'build'
3170+
? !!config.build.sourcemap
3171+
: config.css?.devSourcemap,
3172+
analyzeDependencies: true,
3173+
cssModules: cssModuleRE.test(id)
3174+
? (config.css?.lightningcss?.cssModules ?? true)
3175+
: undefined,
3176+
})
3177+
} catch (e) {
3178+
e.message = `[lightningcss] ${e.message}`
3179+
e.loc = {
3180+
file: toAbsolute(e.fileName),
3181+
line: e.loc.line,
3182+
column: e.loc.column - 1, // 1-based
3183+
}
3184+
throw e
3185+
}
31713186

31723187
// NodeJS res.code = Buffer
31733188
// Deno res.code = Uint8Array

0 commit comments

Comments
 (0)