先介紹下 DevNow
- DevNow Github
- 體驗網站
DevNow 是一個精簡的開源技術部落格專案模版,支援 Vercel 一鍵部署,支援評論、搜尋等功能,歡迎大家體驗。同時也支援 Follow、 RSS 訂閱,歡迎大家訂閱。
目前承載著:
- 我的Blog:一些相關的技術文章和個人生活記錄。
- Weekly: 每週釋出一些技術圈中熱度比較高的內容,主要是技術相關的。
- Ph-Daily: 熱榜可能會穿插一些其他的話題和一些開源專案介紹等。
- DevNow:開源專案的一些迭代資訊和介紹。
背景
很早之前就看到 Astro 5.0 beta
版本,但是沒有跟進,想著等穩定版本釋出在更新。隨著 Astro 5.0 在 12月4號 正式釋出,今天正好不忙就把 DevNow 專案更新到了 Astro v5.0
,不過這個版本的更新不是很大,但是有很多很多的新特性,包括 Content Layer、Server Islands、Prerendering、Vite 6 等等,這些都是很值得大家關注的。具體的更新可以看以下文章:
- Astro 5.0 釋出
- DevNow 更新內容
下邊主要記錄下升級過程中遇到的問題,以及解決的辦法。
升級內容
Content Layer
主要是透過新的 Content Layer loader
來實現載入本地資原始檔,具體如下圖:
文章結構
- 用 id 替換掉 slug
- render 引入替換
Issues
loader 載入本地檔案
透過 loader glob
載入本地檔案的時候,預設是透過 entry id
來生成文章的索引, id
和原先的 slug
的區別是 id 會帶上檔名字尾,如:
// id: 2022-05-22.md
// slug: devnow
會導致原先的文章無法載入,搜尋引擎已經收錄的都是 slug
這種路由,這樣替換成 id
會導致路由的變更,這裡還是期望生成 slug
這樣的路由。
Astro
中提供了兩種方式:
- legacy-flags : 透過
legacy-flags
來相容原先的資料載入方案。 - 繼續使用
Content Layer loader
,然後在loader
中進行處理: 透過自定義generateId
來實現自定義 id。解決方案是在社群找到的 feat: add glob loader
其他的設計一些小改動,具體的改動可以看 DevNow 的升級 Commit 中的詳細資訊。
剩下的後邊在繼續跟進,還有些新的 Feature
也會在後續迭代上。