Compilation 如何在一个不需要';你不能在RoR上跑步吗?
我今天才开始玩Compilation 如何在一个不需要';你不能在RoR上跑步吗?,compilation,project,haml,watch,compass-sass,Compilation,Project,Haml,Watch,Compass Sass,我今天才开始玩compass和haml。虽然我非常熟悉sass的工作方式,并且我知道compass用于sass以及如何使用它,但在高效使用haml方面,我遇到了一些障碍 当然,我希望这里的人已经知道我的问题的答案,并能给我一个小小的开始进入haml 以下是我想要实现的目标: 保存HAML文件时自动编译它们 然而,该项目只是一个小小的静态站点(几个页面),用于构建模板集,以便以后集成到ExpressionEngine CMS(基于php的解决方案)中 所以请记住,我使用HAML只是为了加速最初的“
compass
和haml
。虽然我非常熟悉sass
的工作方式,并且我知道compass
用于sass
以及如何使用它,但在高效使用haml
方面,我遇到了一些障碍
当然,我希望这里的人已经知道我的问题的答案,并能给我一个小小的开始进入haml
以下是我想要实现的目标:
保存HAML文件时自动编译它们
然而,该项目只是一个小小的静态站点(几个页面),用于构建模板集,以便以后集成到ExpressionEngine CMS(基于php
的解决方案)中
所以请记住,我使用HAML只是为了加速最初的“设计到HTML/CSS”过程,有什么好方法可以自动将HAML文件编译成HTML,基本上是给我一个HAML watch
命令,我可以在我的项目上运行
外面有类似的东西吗
至于我正在运行的平台,我有一台运行OSX10.6.6的Mac
感谢阅读,如果您有任何想法、建议和帮助,我们将不胜感激。您可能需要更多的手册,但您可以随时安装gem并按照
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
使用
目录中的值
对象调用更改文件上的haml
可执行文件。我发现在haml中构建静态网站非常好。谢谢@Jacob和@Jonathan,我最终都没有使用您的方法来支持使用中间人
,这就是我自己问题的答案
对于那些在阅读本主题时有类似问题的读者,我之所以如此喜欢middleman,是因为它将我的整个工作流程有效地结合到了一个迷你服务器应用程序中。
使用目录中的mmini project\u name
和mmserver
,我可以立即访问Compass、HAML和SASS,所有这些都可以选择在任何给定时间将其输出到纯html
以下是有关中间商的更多信息:
Staticmatic和Nanoc也支持HAML,但据我所知,它们不支持“开箱即用”的Compass(SASS)编译,这对某些人来说可能有好处,但对我来说不是
再次感谢您的回答,但这是我最终选择遵循的答案。尽管您显然已经找到了您想要的东西,但我仍将发布另一种方法,因为
中间商
可能不是适合所有人的完美解决方案。
我的方法使用Rake。我已经编写了一个简单的rakefile,其中包括一个“watch”任务,每当文件发生更改时,它都会重新编译我的sass(或compass)和haml文件。另外,它会重新加载浏览器预览:)(我不知道中间人是否能做到这一点)
rakefile在github上:我使用的是Codekit,它非常棒,可以处理SASS、Compass、HAML以及许多其他东西。如果您安装了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!"
}
def编译\u haml
%x[haml index.haml index.html]
结束
def do_咆哮(信息)
growlnotify=`哪个growlnotify`。chomp
title=“Watchr消息”
已传递=消息。包括?(“0个失败,0个错误”)
图像=通过?“~/.watchr\u images/passed.png”:“~/.watchr\u images/failed.png”
严重性=通过?"-1" : "1"
options=“-w-n Watchr--image'#{File.expand_path(image)}”
选项您是否有机会加入该产品?CodeKit很不错,我自己也经常使用它,但由于它不支持RVM环境中的自定义编译器,所以它通常不是最佳选择。对于简单的项目来说,这已经足够了。谢谢你的帖子。很好,谢谢你,这正是我在另一个项目上寻找的,所以你的回答时间再合适不过了:)