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