4.3.6 孤兒元件
NoteCraftApp 使用文件 第 4 章・使用指南

4.3.6 使用指南

孤兒元件

標記已經不在、元件檔還留在 .notecraft/components/ 裡,就是孤兒元件。這頁說明它怎麼產生、怎麼找出來,以及怎麼安全地清掉。

本頁目錄
  1. 怎麼產生
  2. 找出孤兒
  3. 為什麼要你同意
  4. 手動清理
  5. 刪除筆記時

生成的元件是一般的原始碼檔案,放在 .notecraft/components/<id>.tsx。標記改了或刪了,這些檔案不會跟著消失,AI 也不會自己刪它們。

怎麼產生

你做了什麼結果
刪掉一個標記<id>.tsx 留著
把標記的 id 改掉舊 id 的元件留著;新 id 變成一個待生成標記
在 view 模式用「⋯」選單刪除筆記沒被其他筆記使用的元件會一起刪掉,見刪除筆記時
在檔案總管、編輯器或用 git 刪掉筆記檔這篇所有的元件都留著
起點:flow.mdx 有標記 old-flow(generated),對到 .notecraft/components/old-flow.tsx 你做了什麼 筆記 flow.mdx .notecraft/components/ 刪掉標記(連 import 與元件一起) 沒有 old-flow 標記 old-flow.tsx 孤兒 把標記的 id 改成 new-flow 標記 new-flow 待生成 old-flow.tsx 孤兒 new-flow.tsx 還沒生成 view 的「⋯ → 刪除筆記」 flow.mdx 已刪除 old-flow.tsx 已刪除 別篇也有同 id 標記時保留 在編輯器、檔案總管或用 git 刪掉筆記檔 flow.mdx 已刪除 old-flow.tsx 孤兒
同一個起點、四種動作:只有在 view 模式用「刪除筆記」會連元件一起清;其他方式都會留下對不到標記的元件,也就是孤兒。

刪標記時,記得連同它正下方的 import 與 <GeneratedFrame>…</GeneratedFrame> 一起刪。只刪註解的話,元件還是會顯示在筆記裡。

找出孤兒

note-scanner 每次掃描時,會把 .notecraft/components/ 裡的每個 .tsx 拿來和所有筆記的標記 id 比對,對不上的列在 Orphans 表裡:

component fileid
.notecraft/components/old-flow.tsxold-flow

處理視覺化時它就會一併回報。只想看孤兒,在 Claude Code 裡說「掃描標記,列出孤兒元件」。

比對的是標記的 id,不是筆記裡的 import。標記刪了、import 與元件還留在筆記裡的情況,也會被列成孤兒,但它其實還在使用中。

為什麼要你同意

孤兒元件一定要你明確同意才會刪除。note-scanner 只讀不寫,回報孤兒時會註明「徵詢作者同意前請勿刪除」,AI 會先在對話裡問你。

原因是這份清單只能說明「標記對不上」,看不出:

  • 這個元件是不是你手動改過、還沒提交進 git
  • 筆記是不是還 import 著它
  • 標記是不是你暫時拿掉、之後會放回來

同意的方式就是在對話裡直接說,例如「刪掉孤兒元件 old-flow」。

手動清理

  1. 確認沒有筆記還在引用它:

    終端機
    grep -rn "@notes/components/old-flow" ./notes
  2. 沒有結果,就刪掉 .notecraft/components/old-flow.tsx

  3. 開著 serve 時,它會在背景重新 build;沒開時跑一次 npx notecraftapp build ./notes 確認

元件檔跟著 git 提交,刪錯了可以從 git 還原。

刪除筆記時

在 view 模式從筆記頁首「⋯」選單選「刪除筆記」,確認對話框會列出這次會動到的元件:

對話框的區塊列出什麼
將一併刪除以下 AI 生成元件這篇標記的 id 所對應、實際存在的 .notecraft/components/<id>.tsx
其他筆記也引用、會保留別篇筆記也有同 id 標記的元件
  • 還沒生成(pending、failed)的標記沒有元件檔,不會列出
  • 判斷「其他筆記也引用」的依據,是別篇筆記裡有沒有同 id 的標記
  • 清單載入完成前不能按「確認刪除」;按下後只刪對話框上列出的檔案

這個對話框就是你同意刪除的地方,所以這裡的刪除不用再經過 AI。刪除不能從介面復原,要靠 git 或你自己的備份。serve/build 的產物沒有刪除功能,見在介面新增與編輯。

用其他方式刪掉筆記時,元件會全部留下,之後由 note-scanner 列成孤兒。

在 GitHub 上修改這一頁