hexo-staging
Mit Rum- und Ausprobieren und ein Doku-Lesen bin ich mit mich Hexo schon relativ weit gekommen.
Grundsätzlich hat Hexo zwei verschiedene Modi:
- hexo generate läuft alle Routen durch, rendert die dazugehörigen Seiten und speichert sie als statische Files auf die Platte. Die generierten Dateien laden bei mir im Live-System und werden da von einem Nginx ausgeliefert.
- hexo server startet einen Server und rendert dynamisch die angefragte Seite. Der Server ist etwas träge, hat aber einen Watcher und ich nutze das lokal zum Entwickeln.
Die zwei Prozesse getrennt zu haben, ist schon praktisch, aber mir fehlte noch ein Staging mit dem ich zwischen Development und Production unterscheiden und switchen kann.
Daher hab ich mein erstes Hexo Plugin geschrieben, dass Hexo um einen einfachen Staging-Mechanismus erweitert.
Installation
Einfach nur per npm installieren:
cd /root/of/your/hexo/project
npm install hexo-staging
Staging in der _config.yml
In der Config fügt mal einen neues Stagings ein; darin pro Staging die Einstellungen, die für das Staging geändert werden sollen.
Die Staging Namen sind überigens egal; ich benutze production und development.
title: "Samisdat"
url: "http://example.com"
stagings:
development:
title: "Samisdat Dev"
url: "http://example.local"
Ob die Einstellungen korrekt sind, läßt sich leicht testen:
hexo config url
#http://example.com
Per Parameter läßt sich das jeweilige Staging aktivieren und dann sollten auch die Einstellungen ensprechen überschrieben sein.
hexo config url --staging development
#http://example.local
Folgende Hexo Befehle akzeptieren ein Staging per Parameter
hexo config
hexo deploy
hexo generate
hexo server
Conditional Tag
Außer den stagebaren Einstellungen bringt das Plugin noch ein neues Conditional Tag für die Templates mit:
<% if (true === is_staging("development")){ %>
<%- css('style.css') %>
<% } else { %>
<%- css('style.min.css') %>
<% } %>