问题 如何在一个不在RoR上运行的小项目中将我的HAML文件自动编译为HTML文件?


我今天才开始玩 compass 和 haml。虽然我对这种方式非常熟悉 sass 工作,我明白了什么 compass 是为了 sass 以及如何使用它,我在使用时遇到了一些障碍 haml 有效率的。

当然我希望这里的某个人已经知道我的问题的答案,并且可以给我一点启动 haml

这是我想要完成的事情: 保存时自动编译我的HAML文件。

然而,该项目只是一个非常小的静态站点(几页),用于构建模板集,以便以后集成到ExpressionEngine CMS中( php 基于解决方案)。

所以请记住,我自己使用HAML来简化最初的“设计到HTML / CSS”过程,这是一个自动编译我的HAML文件到HTML的好方法,基本上是给我一个东西的东西 haml watch 命令,我可以在我的项目上运行?

那里有甚至这样的东西吗?

至于我正在运行的平台,我有一台运行OS X 10.6.6的Mac。

感谢阅读,任何想法,建议,帮助将非常感谢。


4725
2018-04-13 12:43


起源



答案:


非常感谢@Jacob和@Jonathan,我最终都没有使用你的方法来支持使用 middleman因此回答了我自己的问题。

对于那些阅读本主题的人来说,有一个类似的问题,我喜欢的原因 middleman 它将我的整个工作流程有效地整合到一个迷你服务器应用程序中。 运用 mm-ini project_name 接着 mm-server 在目录中,我可以立即访问Compass,HAML和SASS,只需在任何给定时间将其输出到纯HTML。

这里有更多信息 middleman : http://middlemanapp.com/

Staticmatic和Nanoc也做HAML,但据我所知,他们没有“开箱即用”支持Compass(SASS)编译,这对某些人来说可能是一个好处,但对我来说却不是。

再次,感谢您的回答,这是我最终选择遵循的答案。


7
2018-04-20 08:24





如果你安装了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} &)
end

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

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

如果您没有安装咆哮,请将该部分留下


3
2017-12-17 08:33



很好,谢谢,这正是我在我的另一个项目上寻找的所以你的答案不可能有更好的时间:) - Jannis


答案:


非常感谢@Jacob和@Jonathan,我最终都没有使用你的方法来支持使用 middleman因此回答了我自己的问题。

对于那些阅读本主题的人来说,有一个类似的问题,我喜欢的原因 middleman 它将我的整个工作流程有效地整合到一个迷你服务器应用程序中。 运用 mm-ini project_name 接着 mm-server 在目录中,我可以立即访问Compass,HAML和SASS,只需在任何给定时间将其输出到纯HTML。

这里有更多信息 middleman : http://middlemanapp.com/

Staticmatic和Nanoc也做HAML,但据我所知,他们没有“开箱即用”支持Compass(SASS)编译,这对某些人来说可能是一个好处,但对我来说却不是。

再次,感谢您的回答,这是我最终选择遵循的答案。


7
2018-04-20 08:24





如果你安装了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} &)
end

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

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

如果您没有安装咆哮,请将该部分留下


3
2017-12-17 08:33



很好,谢谢,这正是我在我的另一个项目上寻找的所以你的答案不可能有更好的时间:) - Jannis


我发现了 StaticMatic 非常适合在HAML中构建静态网站。


2
2018-04-13 13:01





也许你想要更多的手册,但你可以随时安装 FS-事件 宝石并做一些事情

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更改文件的可执行文件


1
2018-04-13 12:58





虽然你显然找到了你想要的东西,但我仍会发布另一种方法,因为 middleman 可能不是每个人的完美解决方案。 我的方法使用Rake。我写了一个简单的rakefile,包括一个'watch'任务,可以在文件发生变化时重新编译我的sass(或指南针)和haml文件。此外,它重新加载浏览器预览:)(我不知道中间人是否可以这样做)。

rakefile在github上: https://gist.github.com/1635301/


1
2018-01-19 19:22





Codekit是我使用的,它很棒,可以处理SASS,Compass,HAML以及许多其他东西。


1
2017-10-08 11:02



您是否有机会加入该产品? - Andrew Barber
CodeKit很好,我经常使用它,但由于它不支持RVM环境中的自定义编译器,因此它通常不是最佳选择。对于简单的项目,虽然它已经足够了。谢谢你的帖子。 - Jannis