still-ex / still

A composable Elixir static site generator
https://stillstatic.io
ISC License
252 stars 10 forks source link

Pagination #180

Closed gabrielpoca closed 2 years ago

gabrielpoca commented 2 years ago

Pagination allows you to create multiple files from a single template. The main goal of this change is to introduce a preprocessor that looks for pagination information in a file's metadata and turns that file into multiple files.

Permalink

Inspired by 11ty, I changed the :permalink to allow for embedded Elixir to enable devs to change the output path of the generated files.

Data

While testing against my personal website, I found that making the global data available in every template created a memory leak and consistently blew up the beam. Because of that, I had to remove the global data from the templates, which is a breaking change. You can still call Data.global() from any template, so the mechanism to automatically load data from a folder is still very useful.

Performance

My personal use-case for this feature is very compute-intensive, so while debugging my issues, I also introduced some optimizations: both the AddLayout preprocessor and the include helper were calling a Node process that was only delegating the call to another function. This meant that one process blocked simultaneous renders to a layout or a file being included for no good reason. So I fixed it.

Closes https://github.com/still-ex/still/issues/175