Skip to content

[repo] README の依存表と package.json の突合を freshness.yml に足す (dependabot が package.json だけ更新するため構造的にドリフトする) #269

Description

@shinyaoguri

#257 (README の依存表が実態とずれている) を直したときの再発防止#257 は手作業で直したが、原因が構造的なので同じずれが必ず再発する。

原因

monaco 0.55 → 0.56 は bee5e1a (#206、dependabot の production-dependencies グループ PR) で入った。dependabot は package.json を書き換えるが README には触らない。 人間が毎回追従する運用は維持できない。

実際 #257 の修正時点で、指摘された monaco 以外に次のずれが残っていた:

  • packages/editor/README.md の vite ^8.0 (実態 ^8.1.5)
  • packages/verify/README.md の vite ^8.0 (同上)
  • dompurify / marked が editor の依存表から行ごと欠落

現状の自動化

.github/workflows/freshness.yml の検査は 2 項目のみ:

  1. Markdown の相対リンク切れ (:44-80)
  2. npm outdated の要約 (:82-)

「README 依存表 vs package.json」の検査は無い。

対応案

freshness.yml に検査ステップを追加する (node インラインスクリプト ~40 行)。各 packages/*/README.md の依存表をパースし、対応する package.jsondependencies / devDependencies と突き合わせて、(a) バージョンのずれ、(b) 表に無い runtime dependency、を報告する。

先に決める必要があること

表記規則が現状バラついているので、そのままだと誤検知だらけになる:

  • 大半の行は patch 桁を落としている (^3.10^3.10.1)
  • ところが vite だけ minor を落として ^8.0 (実態 ^8.1.5) と書かれていた

規則を「package.json の値をそのまま書く」に統一するのが最も単純で、検査も完全一致で済む。表が少し冗長になるのと引き換えに、機械で強制できる。

あわせて検討: freshness.yml の既知の粗

同じワークフローを読んだときに気づいた点 (別 PR でよい):

  • npm outdated の件数に latest が current より古いパッケージが算入される@types/diff (current 8.0.0 / latest 7.0.2) と @types/jszip (3.4.1 / 3.4.0) が「古い依存 21 件」に数えられている。major 表からは isMajorBehind で正しく除外されているが、総数には残る
  • 依存の古さの報告は .github/dependabot.yml (monthly・grouped・上限 5 PR) と役割が重複している。リンク切れ検査と major 到来の通知に絞るほうが Issue のノイズが減るかもしれない

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpkg:repoリポジトリ横断 (docs/CI/依存)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions