メインコンテンツへスキップ

「リリース」タグの付いた投稿 6 件

すべてのタグを見る

·4分で読めます
Naman Goel

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
  • 有効な at-rule としての @starting-style

ポストプロセッシングに lightningcss を使用する

StyleX のコンパイルプロセスは、概念的には3つのステップのプロセスです。

  1. JavaScript ソースファイルを変換して、stylex.create などの使用箇所を結果の classNames に置き換え、生成された CSS を収集します。
  2. 収集されたすべての CSS を重複排除し、ソートします。
  3. CSS をファイルに書き込みます。

ただし、多くの場合、CSS をファイルに書き込む前にポストプロセスすることが役立ちます。このポストプロセスには、ミニファイ、プレフィックス付け、その他の変換が含まれる場合があります。多くの議論の結果、このポストプロセスには lightningcss を標準化することにしました。

最初のステップとして、Rollup Plugin にデフォルトで lightningcss を追加します。次に、他のバンドラープラグインのサポートを展開します。

この作業を行った Prakshal Jain に感謝します!

テーマの改善

StyleX のテーマ設定に関して、2つの小さくても重要な改善を行いました。

CSS 変数のフォールバック値を定義するために stylex.firstThatWorks を使用する。

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',
),
},
});

これで、同じ API が 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 を利用)。

·1分で読めます
Naman Goel

StyleX v0.7.3 がリリースされました。以前は NPM への公開に必要なすべてのファイルが含まれていなかった Rollup プラグインの修正が含まれています。

·2分で読めます
Naman Goel

StyleX v0.7.0 をリリースできることを嬉しく思います。StyleX を使い始めるのを簡単にする新しい CLI、変数の改善、およびさまざまなバグ修正が含まれています。

CLI

StyleX は、JavaScript コードを変換し、静的 CSS ファイルを生成するコンパイラーに依存しています。ただし、このコンパイラーをバンドラーと統合するのは難しい場合があります。そのため、バンドラー統合の品質向上に取り組みながら、代替として新しい CLI を導入しています!

CLI はフォルダー全体を変換します。StyleX が既にコンパイルされ、静的な CSS ファイルが生成された出力フォルダーを生成します。さらに、CLI は、生成された CSS ファイルのインポートステートメントを StyleX を使用する各ファイルに挿入します。

バンドラーベースのセットアップの代替案を提供できることを嬉しく思い、CLI を実験的な状態でリリースすることを選択しました。どのように機能するか、どのような改善をご希望かについて、フィードバックをお待ちしております。

CLI の作業を行った Joel Austin に感謝します。

CSS 変数のリテラル名

stylex.defineVars を使用する場合、StyleX は実際の CSS 変数名を抽象化し、JavaScript 参照として使用できるようにします。内部的には、各変数に一意の変数名が生成されます。

ただし、正確な変数名を知ることが役立つシナリオがあります。たとえば、スタンドアロンの CSS ファイルで変数を使用したい場合などです。

そのようなユースケースに対応するために、stylex.defineVars API を更新して、-- で始まるリテラルをそのまま使用するようにしました。stylex.defineVars に渡されるキー以外は、API は変更されていません。

const vars = stylex.defineVars({
'--primary-color': 'red',
'--secondary-color': 'blue',
});
注意

変数名にリテラルを使用する場合、StyleX は一意性を保証できません。

バグ修正と改善

さらに、型、eslint ルール、およびバンドラープラグインのバグ修正が行われました。

·3分で読めます
Naman Goel

CSS カスタムプロパティ (別名「変数」) の使用に関する大きな改善と、多数のバグ修正を含む StyleX v0.6.1 をリリースできることを嬉しく思います。

変数の改善

StyleX での変数とテーマの操作に関して、いくつかの新機能と改善が追加されました。

変数のフォールバック値

stylex.defineVars API で定義された変数にフォールバック値を指定できるようになりました。この新機能では、新しい API は導入されていません。代わりに、既存の stylex.firstThatWorks API が、引数として変数をサポートするようになりました。

import * as stylex from '@stylexjs/stylex';
import {colors} from './tokens.stylex';

const styles = stylex.create({
container: {
color: stylex.firstThatWorks(colors.primary, 'black'),
},
});

フォールバック変数のリストの使用がサポートされています。

型付き変数

StyleX は、CSS 変数の <syntax> 型を定義するためのまったく新しい API セットを導入します。これにより、生成された CSS 出力に @property ルールが作成され、CSS 変数をアニメーション化したり、その他の特別なユースケースに使用したりできます。

新しい stylex.types.* 関数は、変数を定義するときに特定の型で定義するために使用できます。

import * as stylex from '@stylexjs/stylex';

const typedTokens = stylex.defineVars({
bgColor: stylex.types.color<string>({
default: 'cyan',
[DARK]: 'navy',
}),
cornerRadius: stylex.types.length<string | number>({
default: '4px',
'@media (max-width: 600px)': 0,
}),
translucent: stylex.types.number<number>(0.5),
angle: stylex.types.angle<string>('0deg'),
shortAnimation: stylex.types.time<string>('0.5s'),
});

変数が型付きで定義されたら、他の CSS プロパティと同様に stylex.keyframes でアニメーション化できます。

import * as stylex from '@stylexjs/stylex';
import {typedTokens} from './tokens.stylex';

const rotate = stylex.keyframes({
from: { [typedTokens.angle]: '0deg' },
to: { [typedTokens.angle]: '360deg' },
});

const styles = stylex.create({
gradient: {
backgroundImage: `conic-gradient(from ${tokens.angle}, ...colors)`,
animationName: rotate,
animationDuration: '10s',
animationTimingFunction: 'linear',
animationIterationCount: 'infinite',
},
})

これにより、円錐グラデーションの angle をアニメーション化するなど、興味深い効果を実現できます。

この新機能は主に CSS 型に関するものですが、新しい API により、変数の TypeScript (または Flow) 型もより強力になります。

例に見られるように、ジェネリック型引数を使用して、stylex.createTheme でテーマを作成するときに、変数が受け入れることができる値を制限できます。

ESlint プラグイン

新しい sort-keys ルール

StyleX ESlint プラグインに新しい sort-keys ルールを追加しました。このルールは、StyleX スタイルのキーの順序を一定にするためのスタイルルールです。

貢献者のnedjuliusさんに感謝します

valid-styles ルールの propLimits の改善

valid-styles ルールが改善され、「prop limits」をより表現力豊かに記述できるようになりました。

その他

  • ESlint の 'valid-styles' ルールで、stylex.defineVars で作成した変数を動的スタイル内のキーとして使用できるようになりました。
  • 実験的な stylex.include API のバグ修正
  • stylex.createTheme のデバッグ用 className 生成の修正
  • 0 値から単位が削除されなくなりました
  • コンパイルのバグ修正

コミュニティプロジェクトと共に、エコシステムページが成長を続けています。StyleX スタイルをソートするためのPrettier プラグインも含まれます。

·2分で読めます
Naman Goel

大きな改善と修正を含む Stylex v0.5.0 のリリースを発表できることを嬉しく思います!

新しい stylex.attrs 関数

stylex.props 関数は、className 文字列と style オブジェクトを持つオブジェクトを返します。一部のフレームワークでは、className の代わりに class を、style には文字列値を期待する場合があります。

より多くの場所で StyleX がうまく動作するように、新しい stylex.attrs 関数を導入します。stylex.attrs は、class 文字列と style 文字列を持つオブジェクトを返します。

ESlint プラグインの新しい sort-keys ルール

新しい @stylexjs/sort-keys プラグインが導入され、スタイルをアルファベット順および優先度順にソートします。これにより、メディアクエリの順序がより予測可能になります。

貢献者の@nedjuliusさんに感謝します!

StyleX Babel プラグインの新しい aliases オプション

新しい aliases フィールドを使用して、tsconfig ファイルで設定されているカスタムエイリアスを解決するように StyleX を構成できます。注意: StyleX は現在、エイリアスに絶対パスを設定する必要があります。

貢献者の@rayan1810さんに感謝します!

新しい Esbuild プラグイン

Esbuild 用の新しい公式プラグインが @stylexjs/esbuild-plugin として導入されました。

貢献者の@nedjuliusさんに感謝します!

その他の改善点

  • StyleX Babel プラグインに渡される構成オプションが検証されるようになりました。
  • @stylexjs/stylex に、commonJS エクスポートに加えて ESM エクスポートが追加されました。
  • ESLint の valid-styles ルールで、空の文字列を文字列値として使用した場合にキャッチされるようになります。

バグ修正

  • 以前は型エラーとリンターエラーを引き起こしていた一部の CSS プロパティが、受け入れられるようになりました。
  • opacity に変数を使用しても、型エラーが発生しなくなりました。
  • stylex.defineVars 内で stylex.keyframes を使用できるようになりました。
  • runtimeInjection が正しく処理されるようになりました
  • defineVars からの変数の値を動的スタイルとして設定できるようになりました。
  • CSS 関数内の 0px の使用が、単位のない 0 に簡略化されなくなりました。これは特定の場合に機能しないためです。
  • CSS 演算子の周りのスペースが維持されるようになりました。

さらに、StyleX に関するさまざまなコミュニティプロジェクトを紹介するために、ウェブサイトに「エコシステム」ページを追加しました。

·2分で読めます
Naman Goel

3週間前、StyleX をオープンソース化しました。それ以来、バグの修正と改善に尽力してきました。主なハイライトは次のとおりです。

改善点

  • コンパイル後に生成される JavaScript の量がさらに削減されました。
  • 以前は欠落していた一部の CSS プロパティのサポートを ESLint プラグインに追加しました。
  • stylex.keyframes で変数を使用するためのサポートを追加しました。
  • 本番ランタイムからスタイル注入のコードを削除し、ランタイムのサイズを 50% 以上削減しました。
  • Rollup プラグインに Flow および TypeScript 型を追加しました。
  • すべてのバンドラープラグインで CSS レイヤーを使用するオプションを追加しました。
  • TypeScript でスタイルプロパティ名のオートコンプリートが有効になりました。
  • バンドラープラグインが StyleX を含まないファイルをスキップするようになり、ビルド時間が短縮されました。

バグ修正

  • ESLint プラグインがメディアクエリと疑似クラスに使用されるローカル定数を解決できない場合があるバグを修正しました。
  • 開発モードでのスタイルのランタイム注入が失敗する場合があるバグを解決しました。
  • 開発中にランタイムで注入されたスタイルが、特定の競合に悩まされる場合があったバグに対処しました。
  • Theme の TypeScript 型が、間違った VarGroup にテーマを適用した場合に正しくエラーをスローするようになりました。

これらに加えて、型とドキュメントに他の改善を加えました。すべてのコントリビューターのプルリクエストに感謝の意を表します。♥️

あけましておめでとうございます!