我尝试使用shake 将一些markdonw 文件转换为html(“bake”)。降价文件位于目录“dough”中,html 应该转到“baked”。目标是生成index.html
链接其他文件的文件。
这是我第一次使用shake!
转换有效,但最后第一条规则产生错误
`rule finished running but did not produce file:`
原因可能是该index.html
文件是之前生成的(使用第二条规则)。我如何告诉第一条规则不要期望结果(或再次强制生产)?
第二个问题:如何更改第一条规则以收集扩展名为“md”和“markdown”的文件?
感谢您的帮助!欢迎提出改进建议!
bakedD = "site/baked" -- toFilePath bakedPath
doughD = "site/dough"
shakeWrapped :: IO ()
shakeWrapped = shakeArgs shakeOptions {shakeFiles=bakedD
, shakeVerbosity=Loud
, shakeLint=Just LintBasic
} $
do
want ["index"<.>"html"]
"index"<.>"html" %> \out ->
do
mds <- getDirectoryFiles doughD ["//*.md"]
let htmlFiles = [bakedD </> md -<.> "html" | md <- mds]
need htmlFiles
liftIO $ bakeOneFileIO "baked/index.html"
(bakedD <> "//*.html") %> \out ->
do
let c = dropDirectory1 $ out -<.> "md"
liftIO $ bakeOneFileIO c