JekyllでSass+Compass+Haml+Vue.jsをつかう
GitHub Pagesでこのページを公開するにあたってJekyllを採用したものの,あまりに「暗黙の了解」が多すぎるのでわからなかったことを中心にまとめた. この記事を書いたときは少なくともすでにあるthemeを採用しているが,いずれは趣味でフロントも実装したいと感じたため,Sass, Compass, Haml, Vueを使える環境にする.
基本は以下の公式サイトが参考になる:
Jekyll | Transform your plain text into static websites and blogs
このページ自体もJekyllで作られている.
他にも様々なGithub PagesがJekyllで作られているので,参考になる.
設定ファイル: _config.yml
テンプレートエンジン: Liquid template language
Front Matter
以下のようにファイルの先頭をtriple-dashed lines で囲み,YAMLスタイルでページの設定ができるJekyllの機能.
- layout:
_layoutsのファイルもしくは既存のテーマ名 - title
- permalink: ルーティングを直接指定
e.g.)
pages/→/pages/index.htmlになる - published: falseにすると公開されなくなる
- その他:
page.variableでvariableに指定した値を読み出せる--- layout: post title: Blogging Like a Hacker ---
ディレクトリ構造
.
├── _config.yml
├── _data
| └── members.yml
├── _drafts `jekyll build/serve --drafts` でみれる
| ├── begin-with-the-crazy-ideas.md
| └── on-simplicity-in-technology.md
├── _includes ... インクルードするhtml,css,sass,jsファイル
| ├── footer.html
| └── header.html
├── _layouts
| ├── default.html
| └── post.html
├── _posts ... 記事の投稿用mdファイル
| ├── 2007-10-29-why-every-programmer-should-play-nethack.md
| └── 2009-04-26-barcamp-boston-4-roundup.md
├── _sass Sassファイルのデフォルトパス.`.css` にコンパイルされる
| ├── _base.scss
| └── _layout.scss
├── _site
│ └── 生成された静的ファイル.ここを公開すれば良い
└── _plugins
| └── build時に自動実行されるカスタムプラグイン
├── assets
│ └── ここの名前は何でも良いが,css, jsファイル置き場
├── .jekyll-metadata
└── index.[md,html] ホーム
Sass
_sass にあるものは基本インポート用で _site に表れない.
_sass 以下のファイルをhtmlからインポートしたいscssファイル
(assets/css/main.scss とか) から @import できる.
コンパイルしてほしいファイルはFront Matterに従いダッシュをつけないと
cssにコンパイルされない.
compassをつかう
jekyll-compass もあるがもうメンテされてない.記事は古いが以下に従うといけた.
Jekyll Integration · Compass/compass Wiki · GitHub
_sass/config.rb では相対パスなら前に ../ をつけることを忘れない.
jekyll-haml
haml をhtmlに変換してくれる.
デフォルトでは .md, .html のみのサポートだが .haml もサポートするように.
includeするだけでなく固定ページなど,
_site に出力してほしいならFront Matterに従いダッシュをつける.
_includes 中のhamlファイルは必要なく, {% haml xxx.haml %} で読み込める.
Vue.js / Vuetify.js
_includes の中などで,共通部分のヘッダーにCDNのリンクをはって読み込ませておけば良い.
このページをスクロールしたときに右下に出るトップに戻るボタンはVueが使われている.
material designを使いたかったのとフロント側の実装を楽にしたかったため,Vuetify.jsも利用している.
Configurations
GitHub Pagesで公開する際は,暗黙にデフォルトで設定されている項目がある. Override可なものと不可なものがあるので把握しておく.
その他参考になるサイト
Using Jekyll as a static site generator with GitHub Pages - User Documentation