fix: build-sparkle-design-theme.mjs が @theme inline の自己参照で壊れる問題を修正#290
Conversation
sparkle-design-cli 2.4.1+ は @theme inline の各セマンティック宣言を同名変数 への自己参照(例: --color-primary-500: var(--color-primary-500))にする設計 に変更した(#289 のレビュー指摘で発覚)。build-sparkle-design-theme.mjs は この @theme inline ブロックを解析して registry の cssVars にマージしていた ため、自己参照の場合 color-primary-500 の値が解決不能な循環参照 ("var(--color-primary-500)")になってしまっていた。 sparkle-design.css には実行時に参照できる実値を持つセマンティックトークン 専用の :root ブロックが別途あるため(@theme inline は Tailwind の compiled utility 生成専用)、@theme inline ではなくこちらを読むように変更。 extractBraceBlock(最初の1ブロックのみ取得)を extractAllBraceBlocks に 置き換え、プリミティブ :root とセマンティック :root の両方をマージする。 現状 Vercel 本番ビルド(scripts/build-registry-vercel.sh)は sparkle-design-cli@2.2.2 に固定されているため影響しないが、ローカルの `make registry` 実行、および将来のバージョン固定引き上げ時に確実に顕在化する 問題だったため修正した。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
Walkthrough
ChangesテーマJSON生成
Estimated code review effort: 3 (Moderate) | ~20 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Pull request overview
sparkle-design.css の @theme inline が(将来的に)自己参照トークンを含む場合でも、registry 用に生成する sparkle-design-theme.json の cssVars.theme が循環参照にならないよう、テーマ抽出ロジックを調整する修正です。
Changes:
:root { ... }ブロックを「最初の1つ」ではなく「すべて」抽出できるようにし、複数:rootをマージしてcssVars.themeを生成@theme inlineブロックを registry のcssVarsソースとして使わない方針をコードコメントで明確化
Summary
#289 の Codex レビュー指摘(P1)を受けての修正です。
sparkle-design-cli2.4.1+ は@theme inlineの各セマンティック宣言を同名変数への自己参照(例:--color-primary-500: var(--color-primary-500))にする設計に変更した(goodpatch/sparkle-design-internal#229)build-sparkle-design-theme.mjsはこの@theme inlineブロックを解析して registry のcssVarsにマージしていたため、自己参照の場合color-primary-500の値が解決不能な循環参照("var(--color-primary-500)")になってしまっていたsparkle-design.cssには実行時に参照できる実値を持つセマンティックトークン専用の:rootブロックが別途あるため(@theme inlineは Tailwind の compiled utility 生成専用)、そちらを読むように変更。extractBraceBlock(最初の1ブロックのみ取得)をextractAllBraceBlocksに置き換え、プリミティブ:rootとセマンティック:rootの両方をマージする影響
scripts/build-registry-vercel.sh)はsparkle-design-cli@2.2.2に固定されているため直ちには影響しませんが、ローカルのmake registry実行、および将来のバージョン固定引き上げ時に確実に顕在化する問題でした動作確認
cssVars.theme['color-primary-500']が"var(--color-blue-500)"(解決可能な値)になることを確認(修正前は"var(--color-primary-500)"という循環参照になっていた)sparkle-design-theme.jsonは git 管理外のビルド成果物のため、確認用に生成したファイルはコミットに含めていませんCo-Authored-By: Claude Sonnet 5 noreply@anthropic.com