( environment: PartialEnvironment, id: string, src: string, deps: Set<string>, workerController: PreprocessorWorkerController, urlResolver?: CssUrlResolver, )
| 3209 | |
| 3210 | const importLightningCSS = createCachedImport(() => import('lightningcss')) |
| 3211 | async 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 | } |
no test coverage detected