跳至內容

ESLint 設定

PikaCSS 提供 async ESLint flat-config factory,會載入 canonical project config,檢查每個 configured root 的 static usage。

Setup

sh
pnpm add -D @pikacss/eslint-config
ts
// 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。

下一步