ESLint 設定
PikaCSS 提供 async ESLint flat-config factory,會載入 canonical project config,檢查每個 configured root 的 static usage。
Setup
sh
pnpm add -D @pikacss/eslint-configts
// eslint.config.mjs
import pikacss from '@pikacss/eslint-config'
export default [
await pikacss(),
]自訂 config path時只需要提供 locator:
ts
export default [
await pikacss({ config: './pika.config.mts' }),
]fnName、readonly globals、scan ownership等都來自 canonical PikaCSS config;不要另外手動註冊 plugin或 rule semantics。
Rules
static-usage
說明
此 rule驗證:
- configured root的 base
pika(...)call只能使用 bounded-static expressions; - static-extension chain語法必須合法;
- root只能出現在 owning entry的 scan scope;
- 一個 entry不能依賴另一個 entry的 Pika root;
- lexical-shadowed root仍是普通 application binding。
什麼算是靜態
Evaluator有三種結果:known、engine-dependent、invalid。合法 static extension terminal可延後到 compiler Prepare用 initialized Engine求值;普通 runtime variable/function call仍會被拒絕。
範例
ts
// ✅ valid
pika({ color: 'red' })
pika({ color: pika.theme.colors.primary })
// ❌ runtime-dynamic
const color = getColor()
pika({ color })Migration
舊 pikacss/no-dynamic-args 與 .str/.arr 特例已移除。現在只有 pikacss/static-usage,而 ESLint factory唯一的公開 option是 optional config locator。