6.5 ignore.json
NoteCraftApp 使用文件 第 6 章・參考

6.5 參考

ignore.json

ignore.json 的讀取位置、欄位、規則語法、內建排除,以及格式錯誤與各種提醒的處理方式。

本頁目錄
  1. 讀取位置
  2. 頂層
  3. 規則語法
  4. 內建排除
  5. 影響範圍
  6. 錯誤與提醒
  7. 生效時機

設定方式與範例見排除檔案,這頁只列規格。1.10.0 起支援。

讀取位置

只讀一個位置:<執行指令的目錄>/.notecraft/ignore.json,和 plugins.json 同一處。

執行方式讀取的檔案
在 my-project/ 執行 npx notecraftapp view ./docsmy-project/.notecraft/ignore.json
在 docs/ 執行 npx notecraftapp viewdocs/.notecraft/ignore.json

不會合併兩份。執行目錄和筆記資料夾不同、而筆記資料夾裡也有 .notecraft/ignore.json 時,build log 會提醒那一份不會生效。

檔案不存在時只套用內建排除,不印任何訊息。

頂層

欄位型別必填說明
ignore字串陣列否規則清單,省略等同空陣列
$schema字串否給編輯器用,app 不讀。網址 https://cdn.jsdelivr.net/npm/notecraftapp/schemas/ignore.schema.json

頂層必須是物件,寫成陣列 [...] 會讓 build 失敗。其他欄位會被略過,build log 印警告(常見是把 ignore 拼成 ignores)。

規則語法

與 .gitignore 相同。路徑一律相對筆記資料夾、以 / 分隔,Windows 也一樣。

寫法比對
name不含 /:任何深度的同名檔案或資料夾
/name開頭 /:只比對筆記資料夾根目錄
a/b中間有 /:從筆記資料夾的根算起
dir/結尾 /:只比對資料夾,整個子樹排除
*、?、[abc]不跨 / 的萬用字元
**跨任意層
!pattern把前面排除的收回;多條規則命中同一個檔案時,最後一條決定結果
#…註解;要比對 # 開頭的檔名寫 \#
空字串、只有空白略過

資料夾整個被排除時不會往下讀,所以裡面的檔案無法用 ! 收回。

內建排除

不必寫,也無法用 ! 解除:

規則說明
. 開頭的檔案與資料夾.git/、.notecraft/、.obsidian/、.env 等
node_modules/任何深度
dist/任何深度

影響範圍

對象被排除時
.md/.mdx不是筆記:沒有頁面,不在 Sidebar、筆記列表、搜尋、儀表板
資料檔 .json不交給 Plugin;plugins.json 的 files、exclude 比對之前就略過
圖片與附件不複製進 build 產物;view 的 /notes-assets/* 回 404
view 的寫入 API標籤統計、改名、刪除不碰它;以 slug 找筆記時當作不存在;資料夾選單不列;不能在被排除的位置新增筆記
serve改了不觸發 rebuild;被排除的資料夾不監看
build 快取改了不讓快取失效,也不計入筆記數
note-scanner subagent掃描 @ai-visualize 標記時略過

錯誤與提醒

情況結果
不是合法 JSON、頂層不是物件、ignore 不是字串陣列build 失敗,指出檔案與第幾個元素
規則裡的 [ 沒有對應的 ]build 失敗,指出第幾條
有不認得的頂層欄位警告
想用 ! 解除內建排除(例如 !dist/)警告,規則不生效
! 規則的目標在一個整個被排除的資料夾裡警告,提示改寫成 資料夾/*
筆記連到被排除的筆記警告,連結照樣產生,但會是 404
筆記引用被排除的圖片警告,圖片不會出現在產物
系列章節或 <PluginView src> 指到被排除的檔案系列跳過這一章並警告;<PluginView> 照原本規則 build 失敗,訊息說明是被排除
某條規則一個檔案都沒命中不提醒

build 完會再檢查一次產物,出現被排除的檔案就讓 build 失敗。

生效時機

子命令改了 ignore.json 之後
view自動重新啟動 dev server
serve換用新規則並重新 build
build下次執行時快取失效、重新 build

在 GitHub 上修改這一頁