AsciiDocを静的サイトジェネレータで使ってみる (Jekyll / Middleman / Metalsmith)
背景
- Markdown の表現力に不満
- 特に定義リスト。これを一番使いたいのに記法がない
- AsciiDoc ってのが良さそう qiita.com
- 静的サイトジェネレータの調査
- Top Open-Source Static Site Generators - StaticGen
- AsciiDoc を標準で使えるものがそんなにない
- コミュニティのプラグインとかならある
- ブログを書きたいわけではない
- 言語は Ruby or JavaScirpt がいいなぁ
- 候補
- Jekyll
- Middleman
- Metalsmith
Jekyll
jekyll 3.0.0 | Error: undefined method `getConverterImpl' for #<Jekyll::Site:0x007f87b910b088>
動かない。よくわからん。
なんか見つけた。まだ見てない。
Middleman
Middleman は久しぶりに使った。何気なく Ruby のバージョンを上げてみたらエラー。
middleman-livereload
を使っていると発生。
Gemfile
source "https://rubygems.org" ruby '2.1.7' gem "middleman" gem "asciidoctor"
config.rb
activate :asciidoc
source/sample.adoc
= Hello, AsciiDoc! Doc Writer <doc@example.com> An introduction to http://asciidoc.org[AsciiDoc]. == First Section * item 1 * item 2 [source,ruby] puts "Hello, World!"
動作確認はできた。
Metalsmith
公式のサンプルがこれで、その中にある static-site を参考にする。 github.com
build.js
var Metalsmith = require('metalsmith'); var asciidoc = require('metalsmith-asciidoc'); var markdown = require('metalsmith-markdown'); var templates = require('metalsmith-templates'); Metalsmith(__dirname) .use(asciidoc()) .use(markdown()) .use(templates({engine:"handlebars"})) .use(hello) .build(function(err){ if (err) throw err; }); function hello(files, metalsmith, done){ for (var file in files) { console.log(file); } done(); }
src/sample.adoc
--- title: My Sample Post date: 2015-11-04 template: post.html --- == Hello, AsciiDoc! Doc Writer <doc@example.com> An introduction to http://asciidoc.org[AsciiDoc]. == First Section * item 1 * item 2 [source,ruby] puts "Hello, World!"
commands
$ make build $ node build.js
ふむ。素晴らしい。
この記事がとても参考になりました。