我想要使用Rake将Haml文件转换为HTML文件,这样如果Haml文件没有更改,我不会重新生成现有的HTML。如何处理Rake中独立目录中的输入和输出?
但是,我不希望我的输入文件,输出文件和Rakefile
都冲入一个目录。相反,我希望我的输入文件位于src/
,输出文件位于build/output/
。所以,我想先从:
Rakefile
src/
slides.haml
,我想结束:
Rakefile
src/
slides.haml
build/
output/
slides.html
我已经试过的耙码数位,没有运气。
首先,我尝试了穴居人的做法,硬编码的确切的文件我想:
task "build/output/slides.html" => "src/slides.haml" do
touch task.name
end
task :slides => "src/slides.haml"
task :default => "slides"
运行rake --trace
结果:
** Invoke default (first_time)
** Invoke slides (first_time)
** Invoke src/slides.haml (first_time, not_needed)
** Execute slides
** Execute default
目录未建,而我呢没有一个空的build/output/slides.html
文件。
理想情况下,我更喜欢rule
-和-FileList
的方法,使用诸如this SO answer或this "Rake cheatshet" entry之类的东西。然而,我在这个主题上尝试了一些变化,我得到了相同的结果,这表明我有更深刻的东西混乱了。我已经将我的Rakefile
修剪回穴居人的方法,只是为了尝试讨论这里发生的事情。
为什么Rake不能识别我的"build/output/slides.html"
任务?在Rake中使用子目录(输入或输出)有什么魔力?
感谢这个!我会给予你赏金,主要是因为你触发了我(当试图弄清楚我的错误在哪里你的答案),以确切地注意到我的穴居人方法出错了。 – CommonsWare