-
Notifications
You must be signed in to change notification settings - Fork 227
Open
Description
When analyzeDependencies: true is enabled, the layer field from @import rules is not included in the dependency metadata. The url and media fields are preserved correctly.
Reproduction
Repository: https://github.com/aneuhold/lightningcss-layer-bug
import { transform } from 'lightningcss';
const css = `@import url('test.css') layer(external) not print;`;
const result = transform({
filename: 'test.css',
code: Buffer.from(css),
analyzeDependencies: true,
});
console.log(result.dependencies[0]);
// {
// type: 'import',
// url: 'test.css',
// media: 'not print', // ✅ preserved
// // layer field is missing
// }Expected
The dependency object should include a layer field:
{
type: 'import',
url: 'test.css',
layer: 'external',
media: 'not print'
}Test Results
All layer variants are missing:
| Input | Expected layer | Actual |
|---|---|---|
@import url('x') layer(external); |
'external' |
Missing |
@import url('x') layer; |
null or true |
Missing |
@import url('x') layer(base) screen; |
'base' |
Missing |
Context
- Lightning CSS npm v1.30.2 (Rust crate v1.0.0-alpha.68)
- The
ImportRulestruct insrc/rules/import.rshas alayerfield - The
ImportDependency::new()method insrc/dependencies.rsextractssupportsandmediabut notlayer
This affects bundlers (including Turbopack) that rely on dependency metadata to reconstruct CSS imports with proper cascade layer ordering per the CSS Cascade 5 spec.
Metadata
Metadata
Assignees
Labels
No labels