Building static websites in Julia
Franklin is a simple, customisable static site generator oriented towards technical blogging and light, fast-loading pages.Key features
click on the '✓' sign to know more
✓→Augmented markdown allowing definition of LaTeX-like commands,
✓→ Easy inclusion of user-defined div-blocks,
✓→ Maths rendered via KaTeX, code via highlight.js both can be pre-rendered,
✓→ Can live-evaluate Julia code blocks,
✓→ Live preview of modifications,
✓→ Simple optimisation step to compress and pre-render the website,
✓→ Simple publication step to deploy the website,
✓→ Straightforward integration with Literate.jl.
Quick start
To install Franklin with Julia ≥ 1.3,
(v1.6) pkg> add Franklin
You can then just try it out:
julia> using Franklin
julia> newsite("mySite", template="pure-sm")
✓ Website folder generated at "mySite" (now the current directory).
→ Use serve() from Franklin to see the website in your browser.
julia> serve()
→ Initial full pass...
→ Starting the server...
✓ LiveServer listening on http://localhost:8000/ ...
(use CTRL+C to shut down)
If you navigate to that URL in your browser, you will see the website. If you then open index.md
in an editor and modify it at will, the changes will be live rendered in your browser. You can also inspect the file menu1.md
which offers more examples of what Franklin can do.
Installing optional extras
Franklin allows a post-processing step to compress HTML and CSS and pre-render code blocks and math environments. This requires a couple of dependencies:
You will then need to install highlight.js
, which you should do from Julia using the NodeJS.jl package:
julia> using NodeJS
julia> run(`sudo $(npm_cmd()) install highlight.js`)
Note: a key advantage of using NodeJS
for this instead of using npm
yourself is that it puts the libraries in the "right place" for Julia to find them.
Assuming you have python3
, Franklin will try to install the python package css_html_js_minify
if via pip3
.
node
weirdness or related, things will likely still work if you use GitHub to deploy.