嘗試靜態文章生產器
事情是這樣的:我希望網站能啟動閱讀模式。觀察了一下,發現只有靜態文章──也就是一開始文章就印在 HTML 上面──才能啟動閱讀模式。SPA 模式連開都開不了。
沒辦法,只好去找靜態文章了。
需求
我有幾個需求:
- 能動:靜態文章生產器,需要透過 Markdown 語法,順利變成 HTML 檔案。而且針對相當幅度的文章,可以開啟閱讀模式。
- 簡單好操作:只要 Markdown 貼到特定的目錄,就可以直接完成靜態文章的生成。而不用多費心其他問題。像是路由,最好就是放在
articles
目錄以後就透過/articles/00x
呈現這樣。 - 在 Markdown 語法正確的前提下,不要讓我修改 Markdown 的文章。
- 自動產生(次要可選):只要透過網路請求,就能產出文章。而不用貼到專案去。
方案
一開始我當然考慮了 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 的文章,我不認為語法有什麼錯誤。上網搜吶,都說與冒號有關:
- Github: 使用hexo g命令后出错
- Github: hexo generate 出现错误
- hexo博客生成报错YAMLException: can not read a block mapping entry
- hexo博文写作之博客生成generate常见错误集锦
- 标题中冒号后面的空格会引发Hexo错误 | Space after colon is not allowed appear in a post title of Hexo | YAMLException: incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line at line 1, column 44
- 记一些 Hexo 报错
- 美化博客踩到的坑
老實說,我不認為這算什麼錯誤,所以不太想改這些文章。所以最後 hexo 因為一與三而被淘汰。
未來解法
我很快就發現,目前的大多數靜態文章生產器,可能都不太符合我的需求。這樣的話只好暫時放棄這次的嘗試,然後我未來可能有兩個解法:
- 要嘛自己寫一個用戶端的靜態文章生產器,
- 要嘛使用後端技術產生。
但不管哪個都很麻煩。