11 Stimmen

Wie kann ich meine HAML-Dateien in HTML-Dateien in einem kleinen Projekt automatisch kompilieren, das nicht auf RoR läuft?

Ich habe heute erst angefangen, mit compass und haml zu spielen. Während ich mit der Arbeitsweise von sass ziemlich vertraut bin und verstehe, wofür compass für sass ist und wie man es benutzt, bin ich auf ein kleines Problem gestoßen, wenn es darum geht, haml effizient zu verwenden.

Natürlich hoffe ich, dass hier jemand die Antwort auf mein Problem bereits kennt und mir einen kleinen Einstieg in haml geben kann.

Hier ist, was ich erreichen möchte: Automatisches Kompilieren meiner HAML-Dateien, wenn ich sie speichere.

Das Projekt ist jedoch nur eine winzige statische Website (ein paar Seiten), um einen Satz von Vorlagen für eine spätere Integration in das ExpressionEngine CMS (eine auf php basierende Lösung) aufzubauen.

Also im Hinterkopf behaltend, dass ich HAML nur nutze, um den anfänglichen "Design zu HTML/CSS" Prozess zu beschleunigen, was ist ein guter Weg, um meine HAML-Dateien automatisch in HTML zu kompilieren, im Grunde etwas, das mir einen haml watch Befehl gibt, den ich in meinem Projekt ausführen kann?

Gibt es überhaupt so etwas da draußen?

Was die Plattform betrifft, auf der ich laufe, habe ich einen Mac mit OS X 10.6.6.

Vielen Dank fürs Lesen, alle Ideen, Vorschläge, Hilfe wären sehr geschätzt.

7voto

Jannis Punkte 16585

Danke euch beiden @Jacob und @Jonathan, letztendlich habe ich mich für keinen eurer Ansätze entschieden, sondern habe middleman verwendet, daher die Antwort auf meine eigene Frage.

Für diejenigen, die diesen Thread lesen und eine ähnliche Frage im Kopf haben, der Grund warum ich middleman so mag ist, dass es meinen gesamten Workflow effektiv in eine Mini-Server-App kombiniert. Durch die Verwendung von mm-ini project_name und dann mm-server im Verzeichnis habe ich sofort Zugriff auf Compass, HAML und SASS mit der Option, es jederzeit einfach in plain html auszugeben.

Hier gibt es mehr Informationen über middleman : http://middlemanapp.com/

Staticmatic und Nanoc verwenden auch HAML, aber soweit ich herausgefunden habe, unterstützen sie nicht standardmäßig Compass (SASS) Kompilierung, was für manche ein Vorteil sein könnte, für mich jedoch nicht.

Nochmals vielen Dank für eure Antworten, hier ist allerdings die Antwort, der ich letztendlich gefolgt bin.

3voto

Alex Maiburg Punkte 671

Wenn Sie Ruby installiert haben, könnten Sie das watchr gem verwenden.

Mit Hilfe eines kleinen Skripts, das ich hier gefunden habe, können Sie einen Prozess starten, der Änderungen an Ihrer haml-Datei erkennt.

Unten finden Sie meine angepasste watchr.rb

def compile_haml
  %x[haml index.haml index.html]
end

def do_growl(message)
  growlnotify = `which growlnotify`.chomp
  title = "Watchr Nachricht"
  passed = message.include?('0 Fehler, 0 Fehler')
  image = passed ? "~/.watchr_images/passed.png" : "~/.watchr_images/failed.png"
  severity = passed ? "-1" : "1"
  options = "-w -n Watchr --image '#{File.expand_path(image)}'"
  options << " -m '#{message}' '#{title}' -p #{severity}"
  system %(#{growlnotify} #{options} &)
end

do_growl "Überwache Ordner und warte auf Änderungen..."

watch(".*\.haml$") { |x|
  compile_haml
  do_growl "HAML kompiliert!"
}

Wenn Sie Growl nicht installiert haben, lassen Sie diesen Teil einfach weg.

0 Stimmen

Schön, danke, das ist genau das, wonach ich in einem anderen meiner Projekte gesucht habe, also könnte deine Antwort nicht besser getimed sein :)

2voto

Jonathan Punkte 7256

Ich habe StaticMatic gefunden, um wirklich gut für den Aufbau von statischen Websites in HAML zu sein.

1voto

Jacob Oscarson Punkte 6198

Vielleicht etwas mehr manuell, als Sie möchten, aber Sie könnten immer das fs-events Juwel installieren und etwas in der Art von

require 'rb-fsevent'
require "open3"

include Open3

fsevent = FSEvent.new
fsevent.watch Dir.pwd do |directories|
  puts "Änderung erkannt in: #{directories.inspect}"
  popen3('haml',
         '..parameter..',
         '..parameter..') do |stdin, stdout, stderr|
    stdout.read.split("\n").each do |line|
      puts line
    end
  end
end
fsevent.run

verwenden Werte im directories Objekt, um die haml Ausführbare Datei für geänderte Dateien aufzurufen.

1voto

Ole Punkte 1214

Auch wenn Sie anscheinend gefunden haben, wonach Sie gesucht haben, werde ich trotzdem einen anderen Ansatz posten, weil middleman möglicherweise nicht die perfekte Lösung für jeden ist. Mein Ansatz verwendet Rake. Ich habe eine einfache Rake-Datei geschrieben, die eine 'watch'-Aufgabe enthält, die meine Sass- (oder Compass-) und Haml-Dateien neu kompiliert, wenn sich eine Datei ändert. Außerdem lädt es die Browser-Vorschau neu :) (Ich weiß nicht, ob middleman das kann).

Die Rake-Datei befindet sich auf GitHub: https://gist.github.com/1635301/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X