文字寫久了,總會想要開始寫點有圖片的文章。但這時候問題來了,我在 Obsidian 輸入圖片進去時,都會預設放在跟文章同一個目錄下,我該如何讓 Nuxt Content 可以讀取到呢?
這時候我們就要更改一些設定了,首先到 Obsidian 的偏好設定,選取檔案與連結後,更改三處設定。
首先是先更改內部連結格式,改為插入對應儲存庫的絕對路徑。
再來是停用 Wikilinks,改用 Markdown 的語法。但日後為了發揮 Obsidian 的優勢,會另外寫一個 Nitro Plugin 讓我們支援 WikiLink。在這邊為了簡化我們達到目的的成本,暫且停用。
然後設定新附件的預設位置,並指定在 @/content/_attachments
,當我使用 _
開頭時,Nuxt 就會略該資料夾。
這時候我嘗試拖曳一張大頭照進來,就會發現它已經將路徑設定好了。
接著回到 VS Code,我們新增一個 Shell 腳本 @/bin/sync-attachments.sh
,並輸入以下內容:
#/bin/sh
rsync -av --delete content/_attachments/ ./public/_attachments/
並記得給予這個腳本執行權限:
chmod +x ./bin/sync-attachments.sh
這個腳本就是協助將位於 @/content/_attachments/
下的所有檔案同步到 @/public/_attachments/
,並且移除目標目錄中存在,但來源目錄已經刪除的檔案。
但這樣我們版本控制就會有兩套附件檔案,所以這時候我們要到 @/.gitignore
中,去忽略 @/public/_attachments/
:
# directroies for content
public/_attachments/**
最後編輯 @/package.json
,修改 Scripts 區塊為如下:
"scripts": {
"sync": "./bin/sync-attachments.sh",
"build": "pnpm run sync && nuxt build",
"dev": "pnpm run sync && nuxt dev",
"generate": "pnpm run sync && nuxt generate",
"preview": "nuxt preview"
},
這樣我們每次啟動開發伺服器或者是建置產出物,都會進行一次 sync 了。
開啟伺服器,來到剛剛放圖片的頁面,就發現成功讀取該圖片啦!