iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Vue.js

用 Nuxt Content 搭配 Obsidian 建立自己的 Digital Garden系列 第 19

如何將 Obsidian 的附件跟著 Nuxt Content 發布

  • 分享至 

  • xImage
  •  

文字寫久了,總會想要開始寫點有圖片的文章。但這時候問題來了,我在 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 了。

開啟伺服器,來到剛剛放圖片的頁面,就發現成功讀取該圖片啦!


上一篇
將常用的格式元件化
下一篇
為首頁新增內文與近期發表的文章
系列文
用 Nuxt Content 搭配 Obsidian 建立自己的 Digital Garden30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言