Как я могу автоматически скомпилировать мои файлы HAML в HTML файлы в крошечном проекте, который не работает на RoR?

Я только сегодня начал играть с compass и haml. Хотя я хорошо знаком с тем, как работает sass, и я понимаю, что compass для sass и как его использовать, я ударил немного дорожного блока, когда дело доходит до использования haml эффективно.

Конечно, я надеюсь, что кто-то здесь уже знает ответ на мою проблему и может немного начать прыгать в haml.

Вот что я хотел бы сделать: Автоматически компилируйте мои файлы HAML, когда я их сохраняю.

Однако проект представляет собой всего лишь небольшой статический сайт (несколько страниц) для создания набора шаблонов для последующей интеграции в ExpressionEngine CMS (решение на основе php).

Поэтому, имея в виду, что я использую HAML для ускорения начального процесса "Дизайн для HTML/CSS", что является хорошим способом автоматической компиляции моих файлов HAML в HTML, в основном что-то, что дает мне команду haml watch что я могу запустить мой проект?

Есть ли что-то подобное?

Что касается платформы, на которой я работаю, у меня Mac OS X 10.6.6.

Спасибо за чтение, любые идеи, предложения, помощь будут очень оценены.

Ответ 1

Спасибо вам как @Jacob, так и @Jonathan, я в конечном итоге не использовал ни один из ваших подходов в пользу использования middleman, следовательно, ответ на мой собственный вопрос.

Для тех, кто читает эту тему с похожим вопросом, причина, по которой мне нравится middleman, состоит в том, что она эффективно объединяет весь мой рабочий процесс в одно приложение мини-сервера. Используя mm-ini project_name, а затем mm-server в каталоге, я мгновенно получаю доступ к Compass, HAML и SASS с возможностью простого вывода его в обычный html в любой момент времени.

Подробнее о middleman: http://middlemanapp.com/

Staticmatic и Nanoc также делают HAML, но насколько я могу узнать, они не поддерживают компиляцию Compass (SASS), которая для некоторых может быть восходящей, но для меня это не так.

Опять же, спасибо за ваши ответы, вот, тем не менее, ответ, который я в конечном итоге решил сделать.

Ответ 2

Если у вас установлен Ruby, вы можете использовать драгоценный камень watchr.

С помощью небольшого приятного script, который я нашел здесь, вы можете запустить процесс, который распознает любые изменения в вашем файле haml.

Ниже вы можете найти мой настраиваемый watchr.rb

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

def do_growl(message)
  growlnotify = `which growlnotify`.chomp
  title = "Watchr Message"
  passed = message.include?('0 failures, 0 errors')
  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 "Watching folders and waiting for changes..."

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

Если у вас нет рычания, просто оставьте эту часть прочь

Ответ 3

Я нашел StaticMatic, чтобы быть действительно хорошим для создания статических веб-сайтов в HAML.

Ответ 4

Maybee немного более ручной, который вы хотите, но вы всегда можете установить fs-events и сделать что-то в соответствии с

require 'rb-fsevent'
require "open3"

include Open3

fsevent = FSEvent.new
fsevent.watch Dir.pwd do |directories|
  puts "Detected change inside: #{directories.inspect}"
  popen3('haml',
         '..parameters..',
         '..parameters..') do |stdin, stdout, stderr|
    stdout.read.split("\n").each do |line|
      puts line
    end
  end
end
fsevent.run

используя значения в объекте directories для вызова исполняемого файла haml в измененных файлах.

Ответ 5

Хотя вы, по-видимому, нашли то, что искали, я все равно опубликую другой подход, потому что middleman может быть не идеальным решением для всех. Мой подход использует Rake. Я написал простой файл rakefile, включающий задачу "смотреть", которая перекомпилирует мои файлы sass (или compass) и haml всякий раз, когда изменяется файл. Кроме того, он перезагружает предварительный просмотр браузера:) (я не знаю, может ли посредник это сделать).

Файл rake находится в github: https://gist.github.com/1635301/

Ответ 6

Codekit - это то, что я использую, он фантастический и обрабатывает SASS, Compass, HAML, а также многое другое.