
Security News
White House Authorizes Private Companies to Conduct Offensive Cyber Operations
A new federal program will let vetted U.S. cybersecurity firms help investigate and disrupt foreign cybercrime groups under government direction.
@svjunic/css-cascade
Advanced tools
CSS diff tool that compares effective property values by applying cascade rules, not raw text
CSS の変更内容を構造レベルで比較するツールです。単純な文字列差分ではなく、同一セレクタ内で最終的に有効になるプロパティを算出したうえで新旧を比較します。
/css-cascade コマンドの概要・セットアップ・検証の観点単純な文字列差分ではなく、ブラウザと同じカスケードルールを適用した最終値で比較します。
.a { color: red; color: green; } は green だけを有効値として比較!important 優先 — !important の付与・削除も変更として検出.a, .b { } は .a と .b それぞれに展開して比較@media — メディアクエリごとに差分を分離して表示@font-face / @keyframes — フォントやアニメーションの差分にも対応CSS カスケードでは、同じ詳細度(specificity)を持つ複数のセレクタが同一エレメントにマッチするとき、出現順が後のルールが優先されます。DOM を使わずに、セレクタの相対的な出現順が変わったことを検知して警告します。
| パターン | 旧 CSS | 新 CSS | 警告 |
|---|---|---|---|
| 単純な並び替え | A→B→C→D | A→C→B→D | B と C の行に ⚠️ |
| 削除のみ(残りは順序維持) | A→B→C→D | A→C→D | B を削除行として表示(⚠️ なし) |
| 追加のみ(既存は順序維持) | A→B→C | A→X→B→C | X を追加行として表示(⚠️ なし) |
| 削除+並び替え | A→B→C→D | A→D→C | B 削除(⚠️ なし)+ C と D は ⚠️ |
⚠️ 行のうち、同一詳細度かつ競合プロパティ(同じプロパティを異なる値で定義)がある場合は、より強い警告を表示します。
同一セレクタ内で padding と padding-top のように shorthand と longhand が混在するとき、
後勝ちルールで一方が上書きされるリスクを検出して警告します。
margin / margin-top / margin-inline など物理・論理プロパティを横断して検出calc(x * 2) と calc(x*2) のような書き方の違いを同一視(#FFF = #ffffff、先頭ゼロ省略、クォートの有無なども対象)[class*='list'] と [class*=list] を同一セレクタとして扱うcss-cascade/
├── data/
│ ├── old/module.css # 比較元(初期ロード用)
│ └── new/module.css # 比較先(初期ロード用)
├── src/
│ ├── core/
│ │ ├── parse-cssom.js # CSS → 中間モデル(ブラウザ CSSStyleSheet API 使用)
│ │ ├── parse-node.js # Node.js 環境向け Playwright Chromium ブリッジ
│ │ ├── resolve.js # 後勝ちルール適用 → 最終プロパティ集合
│ │ ├── diff.js # 新旧の最終プロパティ集合を比較
│ │ ├── apply-risks.js # shorthand リスクを diff に適用
│ │ ├── order-risk.js # セレクタ出現順の変更リスク検出
│ │ ├── shorthand-risk.js # shorthand / longhand 競合リスク検出
│ │ ├── specificity.js # 詳細度(specificity)計算
│ │ ├── normalize.js # セレクタ・値の正規化ユーティリティ
│ │ ├── index.js # コア API エクスポート(ブラウザ・CLI 共通)
│ │ └── index.node.js # Node.js 版公開 API
│ ├── reporters/
│ │ └── html.js # HTML レポート生成(--format html)
│ ├── styles.css # ブラウザ版スタイル
│ └── ui/
│ ├── main.js # エントリーポイント・状態管理
│ ├── render.js # 差分結果の HTML 生成
│ ├── dropzone.js # ファイルドロップ UI
│ └── fuzzy.js # fzf によるファジー検索
├── tests/
│ ├── diff.test.js
│ ├── diff-shorthand.test.js
│ ├── resolve.test.js
│ ├── order-risk.test.js
│ ├── shorthand-risk.test.js
│ ├── specificity.test.js
│ ├── normalize.test.js
│ ├── layer.test.js
│ ├── cli.test.js
│ └── artifacts.test.js
└── index.html
CSS テキスト
│
▼
parseCss() ブラウザ CSSStyleSheet API(ブラウザ環境)または
Playwright Chromium ブリッジ(Node.js 環境)でパースし、
コンテキスト(base / @media 等)×
セレクタ×プロパティの宣言リストに変換
│
▼
resolve() 後勝ちルールと !important を適用し、
各セレクタの最終有効プロパティ集合を算出
│
▼
diff() 新旧の最終プロパティ集合をセレクタ・プロパティ単位で比較し、
added / removed / changed / unchanged のステータスを付与
| インターフェース | チェック内容 | CSS パース方法 | 主な依存 |
|---|---|---|---|
| CLI | diff + order-risk + shorthand-risk(フラグ指定) | Playwright 経由で Chromium の CSSOM を呼び出し | playwright |
| スキル | CLI と同等(git diff で変更ファイルを自動検出) | 同上 | playwright |
| ブラウザ(GitHub Pages) | diff + order-risk + shorthand-risk(常時実行) | ブラウザ CSSOM を直接利用 | fzf(検索) |
| モジュール | 実装方式 | リスク |
|---|---|---|
specificity.js | :is() / :has() 等の詳細度を独自計算 | CSS Selectors Lv4 仕様変更で誤判定の可能性 |
parse-cssom.js _parseCssTextDecls() | cssText を手動パース(shorthand 保持のため) | Chromium バージョンアップで書式変化の可能性 |
normalize.js normalizeMediaCondition() | スロット退避で括弧・クォートをネスト処理 | 深いネスト(calc() inside @supports)で誤正規化の可能性 |
order-risk.js buildOrderRows() | 位置ベースのセレクタアライメント(LCS 未使用) | 巡回移動パターンで誤ペアが生成される可能性 |
shorthand-risk.js SHORTHAND_MAP | ショートハンド展開テーブルを手動定義 | 新 CSS プロパティ追加時に漏れる可能性 |
FAQs
CSS diff tool that compares effective property values by applying cascade rules, not raw text
The npm package @svjunic/css-cascade receives a total of 7 weekly downloads. As such, @svjunic/css-cascade popularity was classified as not popular.
We found that @svjunic/css-cascade demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A new federal program will let vetted U.S. cybersecurity firms help investigate and disrupt foreign cybercrime groups under government direction.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.