静的ブログジェネレータはそこそこ使えるレベルになってきた。

公開:2017-08-18 09:26
更新:2017-11-15 21:58
カテゴリ:静的ブログジェネレータ,node.js,javascript

その後の経過

静的ブログジェネレータをぼちぼち作っていて、ようやく一通りの機能が実装できた。といっても完璧ではなく、今後もバグ修正・改善・改良は必要だが、ここまでの成果をログとして残しておくことにする。

ちなみにコードはレポジトリの以下のフォルダに格納している。

www/wwwmaker at master · sfpgmr/www

全体構成

全体の構成は以下の図を参照。

構成概要

コンテンツマネジメントはgitをベースとしている。コンテンツの公開はVPSサーバー(ubuntu)上のnginxで行っている。 コンテンツの生成やgitの操作はnode.jsでコードを書いて実施する。 node.jsで書いたコードは2つのスクリプトに分かれている。

  1. build-blog.js
  2. webhook.js

build-blog.jsは、.mdファイルからコンテンツを生成し、githubレポジトリにpushする。生成するコンテンツは上図のとおりである。コンテンツを効率よく生成するためにentries.jsonというファイルを使用している。当初NeDBを使用していたが、不要だとわかりただのJSONファイルとなった。
webhook.jsはWebサーバー上で常駐しており、githubレポジトリにpushされた時、webhookで更新通知を受け取り、Webサーバー上のコンテンツを更新する。さらにコンテンツをnginxのgzip_staticを使用できるようにgzip圧縮する。

.mdファイルについて

.mdファイルはmarkdown形式をベースとしているが、投稿日時などの属性を表現できるように独自拡張している。

.mdファイルの記述例は以下の通りである。

# タイトル
<script type="application/json" id="sfblog">{
 "blogPosting": {
  "keywords": "Test",
  "datePublished": "2017-08-06T02:34:08+09:00",// "draft"で下書き
  "dateModified": "2017-08-08T20:34:25+09:00",
  "url": "https://www.sfpgmr.net/blog/entry/2017/08/34ae7ebde29fcf4d79cf2742c693b596",
  "description": "テスト投稿"
 }
}</script>

## テストページ 

これはテストページです。

### TeX表示

\TeX
\left(\left(a+b\right)^2-\left(c+d\right)^2\right)
\TeX

### 独自タグ(今のところ2種類)

#### adsense
[adsense:xxxxxx]

#### Amazon
[asin:xxxxxxxx]

TeX表示例

\TeX\left(\left(a+b\right)^2-\left(c+d\right)^2\right)\TeX

\left(\left(a+b\right)^2-\left(c+d\right)^2\right)

とまあここまで書いたが、詳細については何回かにわけて書かないと書ききれないな。。 全体の絵を描いただけでもういっぱいいっぱいだ。。

というわけで次回に続く。。