blog.hamadu.net

2017/06/21 - TypeScript製静的サイトジェネレータ「blogoid」

静的サイトジェネレータ blogoid を TypeScript で作った。

blog.hamadu.netblogoid を使って生成されている。

何故作ったか

このブログは、プラットフォームに依存しない、何かを発信する場所を作りたくて生まれたものだ。 ブログをどうやって自作するか?は大まかに分けて2つの方法があり、それぞれメリット/デメリットがある。

  • ウェブアプリを書く
    • pros
      • 自由
    • cons
      • サーバを立てる場所によってはお金がかかる
  • 静的サイトジェネレータを使う
    • pros
      • 一度生成すれば計算が不要なのでレスポンスが速い
      • Github Pages等を用いれば容易にホスティングできる
    • cons
      • できることが制限される(記事にコメントを打てない等)

今回は不自由さに目をつぶって(このブログには多くの機能を求めてないので)、静的サイトジェネレータを作ることにした。

使い方

以下のような設定ファイルを何処かに置いてもらって、

{
  "title": "Blog title",                    # site title
  "author": "Your name",                    # site author(s)
  "entries": "sample/src/entries/**/*.md",  # path to the entries
  "static": {                               # path of the static files(it just copy&pasted)
    "styles/custom.css": "sample/src/styles/custom.css"
  },
  "pages": {                                # page to the non-entry pages
    "index.html": "sample/src/pages/index.html",
    "about.html": "sample/src/pages/about.html"
  },
  "templates": {                            # name and path of templates
    "entry": "sample/src/templates/entry.html",
    "tag": "sample/src/templates/tag.html"
  },
  "partials": {                             # name and path of template partials(can be used in the templates above)
    "header": "sample/src/partials/header.html",
    "footer": "sample/src/partials/footer.html",
    "javascripts": "sample/src/partials/javascripts.html",
    "styles": "sample/src/partials/styles.html"
  }
}

以下のコマンドを叩けば sample/out 以下に一式が吐かれる。

$ blogoid --config sample/config.json --out sample/out -p

これから作りたい機能

  • タグ機能
  • 月別アーカイブ機能
  • リッチなファイルパス指定(ファイルたちをconfig.jsonの相対パスで指定できるようにしたい)