csci8980-f21/posts/2020-10-23-building-with-hakyll.md

52 lines
4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Building with Hakyll"
---
Were pleased to announce that as of today, PLFA builds entirely using Haskell!
Weve migrated our build system from a bundle of Makefiles, shell scripts, and Jekyll, over to [Hakyll][hakyll], a static site building written in Haskell.
All you need to do to build and serve PLFA locally is:
```bash
git clone --recurse-submodules https://github.com/plfa/plfa.github.io PLFA
cd PLFA/
stack build && stack exec site watch
```
That will pull in all the dependencies: Agda, the standard library, Hakyll, Pandoc, *etc.*
Theres been lots of changes to the organisation of PLFA as a consequence, but the most important change, if youre using PLFA as a student, is that we now include the correct version of the Agda standard library as a Git submodule. The [“Getting Started”](/GettingStarted/#install-plfa-and-the-agda-standard-library) page can help you set it up correctly!
If youre a contributor to PLFA, there are some further changes that will affect you!
<!--more-->
- The main build file is [“hs/Main.hs”][plfa-main].
- PLFA is written using Pandoc Markdown:
+ For links, write `/DeBruijn/` instead of `{{ site.baseurl }}/DeBruijn/`.
+ For explicit header anchors, write `{name=my-anchor}` instead of `{#my-anchor}`.
- Many of the files involved in rendering the website were moved:
+ The index page was moved to [“src/plfa/index.md”][plfa-index].<br />
The sections on the index pages are generated from [“src/plfa/toc.metadata”][plfa-toc].
+ The HTML templates were moved to the [“templates/”][plfa-templates] directory.
+ The static files were moved to the [“public/”][plfa-public] directory.
+ The pages were moved to the [“src/pages/”][plfa-pages] directory.<br />
Pages that are a part of the book, as part of the front matter and back matter, e.g., [Preface](/Preface/), were moved to [“src/plfa/frontmatter/”][plfa-frontmatter] and [“src/plfa/backmatter/”][plfa-backmatter], respectively.
+ Weve moved to the latest version of the [Minima][jekyll-minima] theme, adapted for use with Hakyll, which is now explicitly stored in the repository.
- The historical versions which were built using Jekyll—19.08 and 20.07—are stored in the [“versions/”][plfa-versions] directory. For future versions, we plan to pull these in for publication.
- Support for Travis CI was dropped. Weve been having trouble building and caching Agda on Travis for a while now, so until Agda starts publishing pre-built binaries, were moving away from Travis. In the meantime, we will publish PLFA directly to the [“web”][plfa-web] branch.
- The [acknowledgements](/Acknowledgements/) are built from the [contributors][plfa-contributors] directory. We regularly update these files using the GitHub API, using [“hs/UpdateContributors.hs”][plfa-update-contributors], but if your contribution wasnt via a GitHub commit or it doesnt show up for some reason, you can add yourself here!
[hakyll]: https://jaspervdj.be/hakyll/
[pandoc-markdown]: https://pandoc.org/MANUAL.html#pandocs-markdown
[plfa-index]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/index.md
[plfa-toc]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/toc.metadata
[plfa-templates]: https://github.com/plfa/plfa.github.io/tree/dev/templates
[plfa-public]: https://github.com/plfa/plfa.github.io/tree/dev/public
[plfa-pages]: https://github.com/plfa/plfa.github.io/tree/dev/src/pages
[plfa-frontmatter]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/frontmatter
[plfa-backmatter]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/backmatter
[plfa-versions]: https://github.com/plfa/plfa.github.io/tree/dev/versions
[plfa-web]: https://github.com/plfa/plfa.github.io/tree/web/
[plfa-contributors]: https://github.com/plfa/plfa.github.io/tree/dev/contributors
[plfa-main]: https://github.com/plfa/plfa.github.io/blob/dev/hs/Main.hs
[plfa-update-contributors]: https://github.com/plfa/plfa.github.io/blob/dev/hs/UpdateContributors.hs
[jekyll-minima]: https://github.com/jekyll/minima