StyleX v0.8.0 現已推出,內含許多修正與新的 ESlint 規則。
Linting 增強功能
我們已對我們的 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')副檔名,並且此類檔案無其他匯出。
其他 Linting 修補
我們已更新 ESLint 規則,以包含其他遺漏的屬性和值。特別注意,valid-styles
規則現在應能辨識
fieldSizing
為有效的 prop@starting-style
為有效的 at 規則。
使用 lightningcss
進行後處理
StyleX 的編譯處理實際上是一個三步驟的過程
- 轉換 JavaScript 原始檔,將
stylex.create
等用法換成產生的類別名稱,並收集產生的 CSS。 - 刪除重複值並對所有收集到的 CSS 進行排序
- 將 CSS 寫入檔案。
然而,將 CSS 寫入檔案之前,通常需要對其進行後處理。此後處理可能包括縮小、加入前綴,或其他轉換。經過大量討論,我們決定將 lightningcss
標準化為此後處理程序。
首先,我們為 Rollup 外掛程式預設新增 lightningcss
。接下來,我們會為其他打包程式外掛程式推出支援。
感謝 Prakshal Jain 為此專案的辛勞!
佈景主題改善
我們對 StyleX 的佈景主題進行兩項小型但重要的改善。
使用 stylex.firstThatWorks
定義 CSS 變數的後備值
StyleX 中有一個 stylex.firstThatWorks
函數,可以用來定義 CSS 屬性的後備值。這與在 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',
),
},
});
佈景主題具有高於預設 var 值的特殊性
使用 stylex.createTheme
建立的 CSS 規則現在擁有高於使用 stylex.defineVars
建立的規則的特殊性。
這在絕大多數情況下應該不是問題,因為我們總是將規則以正確的順序進行排序。然而,在極少數的邊緣案例中,您可能在同一頁面載入多個 StyleX CSS 檔,此修正會確保一致性。
其他修正
我們在 StyleX 的不同部分進行其他修正
- 修正:不再將
textAlign
的邏輯值轉換為left
和right
。 - 修正: [CLI]從容處理刪除檔案時產生的錯誤 (#695)
- 功能:擴充 CLI 的組態選項 (#638)
- 修正:不再為用於變數的數字值新增「px」單位 (#694)
- 修正:不再為使用原始數字值的其他屬性新增「px」單位 (#705)
文件改善
我們為各種打包程式外掛程式的選項新增文件,並在 生態系統頁面新增其他專案。
我們也更新網站上的搜尋功能,使其更全面而且更準確。(由 Algolia 提供技術支援)