HAML + PhpStorm под Windows

Реализация HAML существует для многих языков, но изначально он был написан на Ruby, поэтому я выбрал именно этот вариант.

Сначала необходимо установить Ruby, для чего загружаем подходящий установочный файл с сайта http://rubyinstaller.org/. Я выбрал Ruby 2.0.0-p481 (x64). Установка предельно проста. Могу отметить лишь то, что я произвел её в директорию по умолчанию, а из предложенных опций выбрал лишь «Add Ruby executables to your PATH» для удобства дальнейшей работы.

install_ruby




Теперь устанавливаем gem HAML. Для этого достаточно открыть консоль и выполнить команду

gem install haml

В моем случае был установлен haml-4.0.5.

Настраиваем PhpStorm, создав Watcher для Haml. В поле «Program» указываем путь к ruby.exe. Учитывая директорию установки Ruby, у меня это

C:\Ruby200-x64\bin\ruby.exe

В поле «Arguments» вписываем

C:\Ruby200-x64\bin\haml $FileName$ $FileNameWithoutExtension$.html

Сохраняем Watcher и проверяем компиляцию haml в html. Все должно работать.

Если вы используете HAML исключительно для верстки, то также может потребоваться отключить эскейпинг html символов в мнемоники внутри параметров тэгов. Для этого следует вызвать haml с параметром —no-escape-attrs. Добавьте его в поле «Arguments» перед макросами.

phpstorm_watcher

В генерируемом html файле для обрамления значений параметров тэгов используются одинарные кавычки. Мне, как и многим, это не нравится. Ситуацию можно изменить, подкорректировав настройки в файле C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\haml-4.0.5\lib\haml\options.rb. Замените параметр:

:attr_wrapper         => "'",

на

:attr_wrapper         => "\"",

Так как в работе я использую xslt, где элементы, не имеющие закрывающего тэга должны содержать слеш, я изменил значение еще одного параметра:

:format               => :html5,

на

:format               => :xhtml,

Это позволяет вместо <img src=".."> получать <img src=".." />

Комментарии (6)

  1. Есть способ упростить инструкцию:

    В поле «Arguments» вписываем:
    C:\Ruby200-x64\bin\haml $FileName$ $FileNameWithoutExtension$.html —format xhtml —double-quote-attributes

    и все что ниже уже не нуждаетвся в настройке.
    —format xhtml — этой опцией мы меняем формат :format => :html5 на :format => :xhtml
    —double-quote-attributes — этой опцией мы меняем :attr_wrapper => «‘» на :attr_wrapper => «\»»

    • У нас используется один haml на всю команду и только в качестве препроцессора, поэтому было проще захардкодить настройки в модуль. Но, в общем случае, вы совершенно правы, нужно использовать параметры командной строки.

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

    • Все подключаемые файлы сложите в одну директорию и настройте Scope в Watcher — исключите из скоупа эту директорию.

      • Спасибо, помогло. Еще нашел на Вашем сайте статью http://omurashov.ru/use-haml/ про использование haml. В комментариях Вы уже объясняли как исключить файлы из watcher. Извиняюсь что не нашел сразу. Вот что значит работать в 3 часа ночи :)

        • Если используете Grunt, рекомендую установить grunt-exec, написать небольшой bat или sh скрипт и перезапускать компиляцию основных haml файлов, если меняются подключаемые. Очень удобно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *