Create a sitemap.xml with Harpjs
Last week I wrote about how I was missing some way to generate a sitemap files using Harpjs. I even filed an issue on github, and I got a first solution as promised! Here it is :
mixin tree(head, tail) for val, key in head if key !== '.git' && key !== 'data' if key == 'contents' each file in val p= tail + file else mixin tree(val, tail + key + "/") h1 Sitemap mixin tree(public, "/")
It introduces a new global variable public
which holds all the files stored in your public directory. This example throws the results in html format, so here how I create my sitemap.xml
:
mixin tree(head, tail) for val, key in head if key !== '.git' && key !== 'data' if key == 'contents' each file in val if /(\.html$)/.test(file) prio = .4 if /about/.test(tail + file) prio = .9 if /posts/.test(tail + file) prio = .7 if /index/.test(tail + file) prio = .6 url loc= tail + file priority= prio else mixin tree(val, tail + key + "/") doctype xml urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9") mixin tree(public, "/")
Nice, I now have my shiny new sitemap.xml file setup for google, bing and else to consume! Note how I'm setting the priority value in a rather ugly way using regex, this is my 1st take; I bet more interesting solutions will come up soon! They metionned they would document all this soon! Thanks @kennethormandy.
I will need to find a solution for not listing the posts that are yet to be published.comments powered by Disqus