I was actually just playing with this.
- Put this in config.toml
[outputs]
home = [ "HTML", "JSON"]
page = [ "HTML"]
That tells your site to make a JSON page for the home page.
-
Make a file called
index.json
in the layouts folder of your preference (mine is in my theme for reasons) -
Use Rick’s example for the content of what he did as /json/single.html. Mine is different since I wanted to include categories and tags, and I’m using lunrjs prebuilt to look for uri instead of href:
{{- $.Scratch.Add "index" slice -}}
{{- range where .Site.Pages "Type" "not in" (slice "page" "json") -}}
{{- $.Scratch.Add "index" (dict "uri" .Permalink "title" .Title "content" .Plain "tags" .Params.tags "categories" .Params.tags) -}}
{{- end -}}
{{- $.Scratch.Get "index" | jsonify -}}
I think that’s what bep was talking about. And I have to say, I like it a lot better than trying to use node (hugo-lunr or lunr-hugo) or Grunt, since I tend to write the docs on my iPad and auto-push the site updates when git syncs.