嘗試靜態文章生產器

事情是這樣的:我希望網站能啟動閱讀模式。觀察了一下,發現只有靜態文章──也就是一開始文章就印在 HTML 上面──才能啟動閱讀模式。SPA 模式連開都開不了。

沒辦法,只好去找靜態文章了。

需求

我有幾個需求:

  1. 能動:靜態文章生產器,需要透過 Markdown 語法,順利變成 HTML 檔案。而且針對相當幅度的文章,可以開啟閱讀模式
  2. 簡單好操作:只要 Markdown 貼到特定的目錄,就可以直接完成靜態文章的生成。而不用多費心其他問題。像是路由,最好就是放在 articles 目錄以後就透過 /articles/00x 呈現這樣。
  3. 在 Markdown 語法正確的前提下,不要讓我修改 Markdown 的文章。
  4. 自動產生(次要可選):只要透過網路請求,就能產出文章。而不用貼到專案去。

方案

一開始我當然考慮了 VuePress 這軟體。不過在開發模式裡面,它根本不能開啟閱讀模式,一開始就不行了。

好吧,那試試 React 好了。那就試試 docusaurus 吧。但寫到一半才發現,路由也要設定。這就不符合我第二個需求了。

「那就去看看 hexo 吧……」我這麼想,然後看了看文章,發現它還不錯:雖然架構有些複雜,但還算好理解。所以就試試看吧。後來也發現蠻好寫的,看起來不錯。

但等到要處理時,問題就來了:

$ npm run server

> hexo-site@0.0.0 server xxx/xxx/xxx/
> hexo server
INFO  Start processing
ERROR Process failed: _posts/010.md
YAMLException: end of the stream or a document separator is expected at line 9, column 4:
    Ref:
       ^
    at generateError (xxx/xxx/xxx/node_modules/js-yaml/lib/js-yaml/loader.js:167:10)
    at throwError (xxx/xxx/xxx/node_modules/js-yaml/lib/js-yaml/loader.js:173:9)
    at readDocument (xxx/xxx/xxx/node_modules/js-yaml/lib/js-yaml/loader.js:1545:5)

看了一下 010.md 的文章,我不認為語法有什麼錯誤。上網搜吶,都說與冒號有關:

老實說,我不認為這算什麼錯誤,所以不太想改這些文章。所以最後 hexo 因為一與三而被淘汰。

未來解法

我很快就發現,目前的大多數靜態文章生產器,可能都不太符合我的需求。這樣的話只好暫時放棄這次的嘗試,然後我未來可能有兩個解法:

  1. 要嘛自己寫一個用戶端的靜態文章生產器,
  2. 要嘛使用後端技術產生。

但不管哪個都很麻煩。

專案網址