Fork me on GitHub

(code "liquidz.uo")

実際の公開からちょっと間空いてしまいましたが、 misakiのベータ版を公開しました。

misakiとは?

rubyのJekyllを参考にClojureで作った静的サイトジェネレータです。当ブログもmisakiで生成していて、 misaki自体のドキュメントもmisakiで管理・生成しています。

が新しいの?

ベータ版で追加した主な機能は以下の通りです。

  • Clojurescriptへの対応
  • 出力のカスタマイズ
  • ビルトイン関数の拡充
  • スマホ対応

Clojurescript対応

設定ファイルに定義を追加することでClojurescriptをビルドすることができるようになりました。 今まではテンプレートをS式で書くだけでしたが、これでJSもS式で書けるようになったので また一歩、全部Clojureのターンに近づいた感じです。

;; clojurescript compile options
 ;; src-dir base is `:template-dir`
 ;; output-dir base is `:public-dir`
 :cljs {:src-dir       "cljs"
        :output-to     "js/hello.js"
        :optimizations :whitespace
        :pretty-print true}

上記の定義を _config.clj に書く(デフォルトでコメントアウトされています)ことで テンプレートディレクトリ(:template-dir)内のcljsディレクトリにあるcljsファイルを 出力先ディレクトリ(:public-dir)のjs/hello.jsとしてビルドします。

力のカスタマイズ

Alpha版で指定できたポストファイル名の正規表現と出力ファイル名は ブログ生成に重点を置いていたため日付が付くことが前提でカスタマイズとしては微妙な機能でした。
Beta版では日付への縛りをなくすことでより自由な出力ができるようになっています。 その良い例がmisakiのドキュメントです。

;; post setting
 ;;   default value: #"(\d{4})[-_](\d{1,2})[-_](\d{1,2})[-_](.+)$"
 :post-filename-regexp #"(\d{4})[-_](\d{1,2})[-_](\d{1,2})[-_](.+)$"
 ;:post-filename-format "{{year}}-{{month}}/{{filename}}"
 :post-filename-format "toc/{{filename}}"

 ;; post sort type (:date :name :title :date-desc :name-desc :title-desc)
 ;;   default value: :date-desc
 :post-sort-type :name

ドキュメントの:post-filename-regexpはデフォルトのままですが、 実際のポストのファイル名は"01-getting-started.html.clj"となっており、日付に縛られていないことがわかります。
なおファイル名の先頭の数字はポストのソート順(:post-sort-type)で使っているのみで この数字も必須というわけではありません。

ルトイン関数の拡充

Alpha版ではhiccupを使ったS式からHTMLへのコンパイラという意味合いが強かったのですが、 Beta版ではテンプレートを生成するためのビルトイン関数を(ある程度)充実させました。 それにより、より容易にサイトを構成することが可能になっています。
詳細はビルトイン関数のAPIを参照してください。

マホ対応

「ビルトイン関数の拡充」にも関係してきますが、ビルトイン関数で提供している header, container, footer など共通の機能を使っている場合には スマホでもそこまで違和感なく表示できるようにしました。
なお当ブログはいろいろカスタマイズしてるので、まだスマホ対応ちゃんとしてません。。そのうちします(´・ω・`)

あくまで共通機能を使っている場合のみなので、 どんな使い方をしてもスマホ対応できるわけではないのでご注意ください。 また「違和感なく見れる程度」なのでスマホに最適化されているわけでもありません。

う使えばいいの?

ドキュメント、もしくは以前のエントリーに具体例をまとめているのでそちらを参照してください。

後に

ソースはGitHubで管理しているので 動作のおかしい箇所や要望はIssuesに追加してもらえるとありがたいです!

» Go page top

blog comments powered by Disqus