4.3.6 使用指南
孤兒元件
標記已經不在、元件檔還留在 .notecraft/components/ 裡,就是孤兒元件。這頁說明它怎麼產生、怎麼找出來,以及怎麼安全地清掉。
生成的元件是一般的原始碼檔案,放在 .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 孤兒 刪標記時,記得連同它正下方的 import 與 <GeneratedFrame>…</GeneratedFrame> 一起刪。只刪註解的話,元件還是會顯示在筆記裡。
找出孤兒
note-scanner 每次掃描時,會把 .notecraft/components/ 裡的每個 .tsx 拿來和所有筆記的標記 id 比對,對不上的列在 Orphans 表裡:
| component file | id |
|---|---|
.notecraft/components/old-flow.tsx | old-flow |
處理視覺化時它就會一併回報。只想看孤兒,在 Claude Code 裡說「掃描標記,列出孤兒元件」。
比對的是標記的 id,不是筆記裡的 import。標記刪了、import 與元件還留在筆記裡的情況,也會被列成孤兒,但它其實還在使用中。
為什麼要你同意
孤兒元件一定要你明確同意才會刪除。note-scanner 只讀不寫,回報孤兒時會註明「徵詢作者同意前請勿刪除」,AI 會先在對話裡問你。
原因是這份清單只能說明「標記對不上」,看不出:
- 這個元件是不是你手動改過、還沒提交進 git
- 筆記是不是還
import著它 - 標記是不是你暫時拿掉、之後會放回來
同意的方式就是在對話裡直接說,例如「刪掉孤兒元件 old-flow」。
手動清理
-
確認沒有筆記還在引用它:
終端機grep -rn "@notes/components/old-flow" ./notes -
沒有結果,就刪掉
.notecraft/components/old-flow.tsx -
開著
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 列成孤兒。