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

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

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

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

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

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

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

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

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

Ответы [ 6 ]

7 голосов
/ 20 апреля 2011

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

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

Вот дополнительная информация о middleman: http://middlemanapp.com/

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

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

3 голосов
/ 17 декабря 2012

Если у вас установлен Ruby, вы можете использовать gem watchr.

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

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

2 голосов
/ 13 апреля 2011

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

1 голос
/ 08 октября 2012

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

1 голос
/ 19 января 2012

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

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

1 голос
/ 13 апреля 2011

Может быть, вам нужно больше руководства, но вы всегда можете установить гем 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 для измененных файлов.

...