Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSS Linter による Baseline サポートの仕組み

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for mattsuu mattsuu
February 21, 2025

CSS Linter による Baseline サポートの仕組み

Browser and UI #1 CSS (2025/02/21) での発表資料
https://browser-and-ui.connpass.com/event/341857/

Avatar for mattsuu

mattsuu

February 21, 2025
Tweet

More Decks by mattsuu

Other Decks in Programming

Transcript

  1. Baseline • 主要ブラウザでの Web 標準のサポート状況 ◦ Chrome, Edge, Safari, Firefox

    • 3つのステータス ◦ Widely available: 主要ブラウザでサポートされて2.5年 ◦ Newly available: 主要ブラウザでサポート ◦ Limited availability: 上記の基準を満たさない 3
  2. 正しい定義を見落とす可能性 • clip-path (基本機能) → Widely • fill-box, stroke-box, view-box

    → Newly • Animatable clipping paths → Limited 5 mdn「Widely です」 開発者「よし、通れ!」
  3. @eslint/css によるサポート • require-baseline ルールが追加 • Baseline の Widely か

    Newly をオプションで指定し、 満たさない場合に警告を出す 7
  4. Baseline のデータを取得する • @web-features から取得 ◦ WebDX Community Group が提供するライブラリ

    ◦ YAML をパースして JavaScript オブジェクトにしているだけ → 操作性が低い、不要な情報も含まれている • @eslint/css で名前とレベルのみの形式に変換して管理 9
  5. まとめ • @eslint/css の require-baseline ルールでは、 ◦ web-features から Baseline

    の定義を取得 ◦ @supports の適用範囲をコンテキストとして管理 ◦ これらを元に Baseline ステータスを比較 • Baseline が活用しやすくなった! 14
  6. 余談: Stylelint のプラグインでも実現できる? • stylelint-no-unsupported-browser-features と browserslist を組み合わせれば近いことはできる • しかし、検知できない機能が複数ある

    ◦ 内部で利用している @doiuse の対応を待つしかない • @supports の対応もない Stylelint 本体がサポートするまでは難しそう… 15