StyleX v0.8.0 がリリースされました。多数のバグ修正と新しいESLintルールが含まれています。
リンティングの強化
ESLintプラグインに多くの改善を加えてきました。既存のルールの改善と新しいルールの追加を行いました。 Melissa Liu に感謝します!
主な変更点は以下のとおりです。
新しい valid-shorthands
ルール
このルールは、CSS短縮プロパティをいつどのように使用すべきかについての意見を強制します。短縮形に複数値の短縮形を使用すること、および特定のプロパティを完全に使用することを禁止します。
const styles = stylex({
invalidShorthands: {
// border shorthands are entirely disallowed
// Use `borderWidth`, `borderStyle`, and `borderColor` instead
border: '1px solid black',
// Multiple values for different sides within the same shorthand are disallowed
borderWidth: '1px 2px 3px 4px',
margin: '10px 20px 30px',
padding: '10px 20px',
},
validShorthands: {
borderBottomWidth: 3,
borderColor: 'black',
borderInlineEndWidth: 2,
borderInlineStartWidth: 4,
borderStyle: 'solid',
borderTopWidth: 1,
marginBottom: 30,
marginInline: 20,
marginTop: 10,
paddingBlock: 10,
paddingInline: 20,
},
});
これらの意見は、最も一貫性があり、再利用可能なCSSを作成するためのガイドとなります。
このルールは、許可されていないすべてのプロパティに対して自動修正を提供します。
新しい enforce-extension
ルール
この新しいルールは、変数を定義する際のルールを強制します。 _createMdxContent stylex.defineVars
の使用が、拡張子が .stylex.js
(または '.ts'、'.jsx'、'.tsx')のファイル内の名前付きエクスポートであり、そのようなファイルに他のエクスポートがないことを強制します。
その他のリンティングの修正
ESLintルールを更新し、不足しているプロパティと値を追加しました。特に、valid-styles
ルールは以下を理解するようになりました。
fieldSizing
を有効なプロパティとして@starting-style
を有効なat-ruleとして
後処理に lightningcss
を使用
StyleXのコンパイルプロセスは、概念的には3つのステップからなります。
- JavaScriptソースファイルを変換し、
stylex.create
などの使用を結果のクラス名に置き換え、生成されたCSSを収集します。 - 収集されたすべてのCSSの重複を削除し、ソートします。
- CSSをファイルに書き込みます。
ただし、CSSをファイルに書き込む前に後処理を行うと便利なことがよくあります。この後処理には、縮小、プレフィックスの追加、その他の変換が含まれる場合があります。多くの議論の末、この後処理には lightningcss
を標準化することにしました。
最初のステップとして、Rollupプラグインにデフォルトで lightningcss
を追加します。他のバンドラープラグインのサポートは、今後展開していく予定です。
この作業にご尽力いただいた Prakshal Jain に感謝します!
テーマの改善
StyleXのテーマに関して、2つの小さなながらも重要な改善を行いました。
stylex.firstThatWorks
を使用してCSS変数のフォールバック値を定義する
StyleXには、CSSプロパティのフォールバック値を定義するために使用できる stylex.firstThatWorks
関数があります。これは、CSSで同じプロパティを異なる値で複数回使用することに似ています。
/* Represent this */
.my-class {
background-color: #808080;
background-color: oklab(0.5 0.5 0.5);
}
const styles = stylex.create({
myClass: {
// as:
backgroundColor: stylex.firstThatWorks(
'oklab(0.5 0.5 0.5)',
'#808080',
),
},
});
désormais、la même API fonctionnera également pour les variables CSS.
/* Represent this */
.my-class {
background-color: var(--bg-color, #808080);
}
const styles = stylex.create({
myClass: {
// as:
backgroundColor: stylex.firstThatWorks(
'var(--bg-color)',
'#808080',
),
},
});
テーマはデフォルトの変数値よりも高い特異性を持つ
stylex.createTheme
で作成されたCSSルールは、stylex.defineVars
で作成されたルールよりも特異性が高くなりました。
ルールは常に正しい順序でソートされているため、これはほとんどの場合問題にはなりませんでしたが、同じページに複数のStyleX CSSファイルを読み込んでいるような極端なエッジケースでは、この修正により一貫性が確保されます。
その他の修正
StyleXのさまざまな部分で、その他の修正を行いました。
- **修正**:
textAlign
の論理値がleft
とright
に変換されなくなりました。 - 修正: [CLI]ファイルの削除中のエラーを適切に処理する (#695)
- **機能**: CLIの設定オプションを拡張する (#638)
- **修正**: 変数に使用される数値に 'px' 単位を追加しない (#694)
- **修正**: 生の数値を値として受け入れる追加のプロパティに 'px' 単位を追加しない (#705)
ドキュメントの改善
さまざまなバンドラープラグインのオプションのドキュメントを追加し、エコシステムページにプロジェクトを追加しました。
また、ウェブサイトの検索をより包括的で正確なものに更新しました。(Algolia搭載)