終於踏入開源社群!我開發了部落格套件 Next Posts

2026-02-27

這篇文章我會和大家分享我是如何從一個單純的開發者一路走到開源貢獻者,以及到今天維護一個套件。 Next Posts 目前不是一個數萬人使用的套件,因此我更多的是用一個一般開發者的視角分享這段經歷。

成為開發者

兩年前我為了撰寫自己的個人網站,毅然決然地踏入網頁開發領域。當時的人工智慧技術尚未像如今這般成熟,我在各個網頁框架中摸索許久,直到遇到 Next.js 後被他優秀的開發體驗深深吸引,就一路使用到今天。

Next.js 提供一系列開箱即用的功能,也有龐大的社群生態系統,使得我在初期幾乎沒有遇到問題。我就一路從靜態的個人網站寫到個人管理系統,而後接觸 Server Actions 等伺服器技術,並摸索身分驗證與資料庫。

第一個真正意義上涵蓋前後端的系統是為校隊撰寫的團隊管理系統,採用 Next.js 14Firebase 運作。其中導入了 NextAuth (Auth.js) 作為身分驗證套件,這也是我第一次開始感到混亂。這邊簡單為沒有使用過的讀者簡單描述當時的狀況,由於套件維護者並不積極開發新版本的功能,也因為 v5 的大規模架構調整,使得社群割裂為使用 v4 的 next-auth 與使用 v5 的 Auth.js。這導致教學文章和社區維護量能被分散,並在我使用數月後出現了問題。

第一次回報問題

事情的導火索出在一次 Firebase 的升級。通常來說套件會盡可能適配最新版本,但 Auth.js 卻沒有跟進,這導致我無法使用最新的功能。雖然能夠使用變通的程式碼替代,但卻無形中增加了複雜性,於是我提交了人生中的第一個問題回報,希望能得到官方的修復。

當然結果是可預期的,我並沒有得到回應。該套件消極的維護根本不可能會把精力花在一個小眾的資料庫上。但在這次的經驗上讓我知道其實回報問題也不是十分困難,某種程度上來說也算為開源社群貢獻極小的心力。

修復問題

數月後我離開了 Firebase,轉向了堪稱世界上最棒的資料庫 PostgreSQL,並使用 Prisma 作為 ORM。在不知道哪一天該套件的依賴項目被標註有漏洞,儘管只影響開發伺服器,這仍對我與廣大的開發者造成審計困擾。在那次我提交的問題終於被回應,也在後續的版本中進行修復。

除此之外我也向一個小型的 npm 套件提交過 react key 相關的錯誤修復並最終獲得合併。這次的經驗也促使我後續萌生開發自己套件的構想。

實驗性套件

next-staticblog 誕生於我對於現有 next.js mdx 相關套件的不滿意。在過去 Next.js 的路由哲學並不適合完全無經驗的一般行銷人員,他們不懂得什麼是 page.tsx 什麼是 page.md(x)

最終我參考了 nextra 的設計哲學,並簡化 mdx 等官方生態系統龐大的依賴項目,打造了僅依靠根目錄 /posts 資料夾與動態路由的文章載入套件。

當時的想法很簡單,打造一個好用的工具提升自己的開發體驗,所以從未對外推廣和遵守語意版本控制。但隨著後續講課時學生的採用與對開源精神的逐漸理解,一個打造開源套件的想法萌上心頭。

Next Posts 的誕生

於是 next-posts 就出現了,這是一個與 next.js 生態完整相容的套件,支援從任何一個資料夾載入文章,並提供了數個實用函數來簡化前言的提取,讓 metadata 的配置更加簡易。

他完整的相容 next-staticblog 的所有功能,並移除原先的 gray-matter 改用建置時綑綁 @std/yaml 實現零依賴。你也可以使用泛型來定義自己的文章元數據結構,實現完整的類型安全。套件擁有現代化 tses 的支援並涵蓋 100% 的覆蓋測試,是最棒的靜態文章載入器。

如果你想要建立一個部落格網站,或是任何一個需要靜態配置文章的系統,Next Posts 都是你最好的選擇。

使用 npm i next-posts 開始,或

閱讀文件:https://github.com/yd-tw/next-posts


至此,我正式的成為龐大開源社群的一份子,往後也會持續維護和推出更多套件。成為開源人或許並沒有你想的那麼困難,勇敢的踏出第一步能夠使得自己喜愛的套件走得更長久。

如果你願意,我希望 next-posts 能成為你踏入開源的第一步。回報問題或貢獻新功能,讓我們一起成長吧!