MCPcopy
hub / github.com/vitejs/vite / compileLightningCSS

Function compileLightningCSS

packages/vite/src/node/plugins/css.ts:3214–3446  ·  view source on GitHub ↗
(
  environment: PartialEnvironment,
  id: string,
  src: string,
  deps: Set<string>,
  workerController: PreprocessorWorkerController,
  urlResolver?: CssUrlResolver,
)

Source from the content-addressed store, hash-verified

3212
3213const importLightningCSS = createCachedImport(() => import('lightningcss'))
3214async function compileLightningCSS(
3215 environment: PartialEnvironment,
3216 id: string,
3217 src: string,
3218 deps: Set<string>,
3219 workerController: PreprocessorWorkerController,
3220 urlResolver?: CssUrlResolver,
3221): Promise<{
3222 code: string
3223 map?: string | undefined
3224 modules?: Record<string, string>
3225}> {
3226 const { config } = environment
3227 const filename = removeDirectQuery(id)
3228
3229 let res: LightningCssTransformAttributeResult | LightningCssTransformResult
3230 try {
3231 res = styleAttrRE.test(id)
3232 ? (await importLightningCSS()).transformStyleAttribute({
3233 filename,
3234 code: Buffer.from(src),
3235 targets: config.css.lightningcss?.targets,
3236 minify: config.isProduction && !!config.build.cssMinify,
3237 analyzeDependencies: true,
3238 })
3239 : await (
3240 await importLightningCSS()
3241 ).bundleAsync({
3242 ...config.css.lightningcss,
3243 filename,
3244 // projectRoot is needed to get stable hash when using CSS modules
3245 projectRoot: config.root,
3246 resolver: {
3247 async read(filePath) {
3248 if (filePath === filename) {
3249 return src
3250 }
3251
3252 const code = fs.readFileSync(filePath, 'utf-8')
3253 const lang = CSS_LANGS_RE.exec(filePath)?.[1] as
3254 | CssLang
3255 | undefined
3256 if (isPreProcessor(lang)) {
3257 const result = await compileCSSPreprocessors(
3258 environment,
3259 id,
3260 lang,
3261 code,
3262 workerController,
3263 )
3264 result.deps?.forEach((dep) => deps.add(dep))
3265 // TODO: support source map
3266 return result.code
3267 } else if (lang === 'sss') {
3268 const sssResult = await transformSugarSS(environment, id, code)
3269 // TODO: support source map
3270 return sssResult.code
3271 }

Callers 1

compileCSSFunction · 0.85

Calls 7

removeDirectQueryFunction · 0.90
generateCodeFrameFunction · 0.90
skipUrlReplacerFunction · 0.85
urlResolverFunction · 0.85
addMethod · 0.80
warnMethod · 0.65

Tested by

no test coverage detected