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

#compilation #project #haml #watch #compass-sass

#Сборник #проект #haml #Смотреть #compass-sass

Вопрос:

Я только сегодня начал играть с 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 gem.

С помощью небольшого приятного скрипта, который я нашел здесь, вы можете запустить процесс, который распознает любые изменения в вашем файле 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} amp;)
end

do_growl "Watching folders and waiting for changes..."

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

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

Комментарии:

1. Приятно, спасибо, это именно то, что я искал в другом моем проекте, поэтому ваш ответ не мог быть рассчитан лучше 🙂

Ответ №3:

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

Ответ №4:

Возможно, потребуется немного больше инструкций, чем вам хотелось бы, но вы всегда можете установить драгоценный камень 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, включающий задачу ‘watch’, которая перекомпилирует мои файлы sass (или compass) и haml всякий раз, когда файл изменяется. Плюс это перезагружает предварительный просмотр браузера 🙂 (Я не знаю, может ли посредник это сделать).

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

Ответ №6:

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

Комментарии:

1. Есть ли вероятность, что вы связаны с продуктом?

2. CodeKit хорош, я сам использую его довольно часто, но поскольку он не поддерживает пользовательские компиляторы в среде RVM, довольно часто это не лучший выбор. Хотя для простых проектов этого может быть вполне достаточно. Спасибо за ваш пост.