Skip to content

chore(ci): lint-staged に ESLint (react/button-has-type) を連携して pre-commit で fail させる #673

Description

@fumtas1k

背景

#569(PR #672)で ESLint + react/button-has-type を導入し、CI(test.yml の test job)で enforce する仕組みを整えた。一方 lint-staged(pre-commit)は現状 Prettier のみ で ESLint 未連携のため、button type 漏れの検出は push 後の CI まで待つ必要がある。

PR #672 のレビューで任意フォローアップとして言及された項目を issue 化したもの。CLAUDE.md §2 でも npm run lint は「コミット前推奨」と記載済み。

スコープ

  • package.jsonlint-staged 設定に、staged な *.{tsx,jsx} に対して eslint を走らせるエントリを追加する。
    • 現状: "*.{js,ts,tsx,jsx,css,md,json,astro}": "prettier --write"
    • 追加案(例): "*.{tsx,jsx}": ["eslint --max-warnings=0", "prettier --write"] など。Prettier との実行順序・重複(tsx/jsx が両エントリに該当)に注意。
  • pre-commit で react/button-has-type 違反が 実際に commit を止める ことを確認(陽性対照)。
  • --fix を自動付与するか、検出のみに留めるかを判断(自動修正は意図しない変更を commit に混ぜるリスクがあるため、検出のみ+手動修正を推奨)。

受け入れ基準

  • staged な .tsx に type 無し button があると pre-commit が fail する(陽性対照で確認)
  • 既存の正常コードでは pre-commit が通る(陰性対照)
  • Prettier との実行順序・二重実行に問題がない
  • 必要なら CLAUDE.md / decisions.md に運用を追記

関連

注: pre-commit はあくまで開発者体験の前倒しであり、最終ゲートは CI(#672 で導入済み)。本 issue は P2(任意改善)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2優先度: 低 (Low)choreciCI / workflow 関連

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions