hakyll は、静的サイトを構築するための jekyll に似たツールです
hakyll は、他のほとんどの同様のツール、github のデフォルトと比較して優れた柔軟性を持っています 静的 Web ページ ジェネレーター jekyll は、 jekyll を使用する場合は、その規則に従う必要があります。たとえば、ブログ投稿は yy-mm-dd で始まるファイル名で ~posts~/ フォルダーに保存する必要があります。柔軟性、hakyll の哲学は、ユーザーがコンテンツを作成し、hakyll がこれらのコンテンツをさまざまなプレゼンテーション形式に変換する責任があるということです。このように、生成されるサイト形式にはブログに限定されず、スライドや PDF などのコンテンツも含めることができます。 hakyll のインストールと基本的な使い方
hakyll は非常に高度な Haskell 言語で書かれているため、hakyll を使用するには Haskell 環境が必要です。Mac でのインストールは非常に簡単ですbrew install ghc cabal-install
$ hakyll-init my-site $ cd my-site $ ghc --make -threaded site.hs $ ./site build $ ./site watch
hakyll の高度な機能
hakyll の強力で柔軟な構成を体験したい場合は、以下をお読みください
上記の方法で hakyll を初期化すると、サイトのファイル構造は
. ├── README.md ├── about.rst ├── contact.markdown ├── css │ └── default.scss ├── images │ └── haskell-logo.png ├── index.html ├── posts │ └── use-hakyll-to-build-static-website.org ├── site ├── site.hi ├── site.hs ├── site.o └── templates ├── archive.html ├── default.html ├── post-list.html └── post.html
少し観察すると、3 つのキーワードがあることがわかります
match
compile はパイプライン、リソースのようなもので、マークダウン -> HTML や圧縮と難読化など、一致 (先頭) からルート (末尾) までのプロセスで実行する必要がある変換作業です。 、などです。
これは hakyll の構造です。非常に明確です。ユーザーが元のデータを提供すると、hakyll がそれらをコンパイルして正しい場所に配置します
hakyll の能力を示すための実践的な例をいくつか示します
sass
-- 使用 compass 来处理 scss 样式 match (fromList ["sass/main.scss", "sass/blog.scss"]) $ do route $ setExtension "css" compile $ getResourceString >>= withItemBody (unixFilter "sass" ["-s", "--scss", "-I", "sass/"]) >>= return . fmap compressCss
create ["archive.html"] $ do route idRoute compile $ do posts <- recentFirst =<< loadAll "posts/*" let archiveCtx = listField "posts" postCtx (return posts) `mappend` constField "title" "Archives" `mappend` defaultContext makeItem "" >>= loadAndApplyTemplate "templates/archive.html" archiveCtx >>= loadAndApplyTemplate "templates/default.html" archiveCtx >>= relativizeUrls
match "slides/*" $ do route $ setExtension "html" compile $ getResourceString >>= withItemBody (unixFilter "pandoc" ["-s", "--mathml", "-i", "-t", "dzslides"])
ここに hakyll を使用している多くの Web サイトがリストされていますが、すべて参照用に github にソースコードが掲載されています
hakyll はパイプラインであり、その機能は、作成したコンテンツを適切な方法で表示することです