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'),而且此類檔案不會有任何其他匯出。
其他程式碼檢查 (Lint) 修復
我們已更新 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 技術支援)