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

Function compileLightningCSS

packages/vite/src/node/plugins/css.ts:3211–3443  ·  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

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

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