Hakyll没有使用新路线进行更新

时间:2017-01-23 01:27:30

标签: haskell routes hakyll

我第一次尝试使用Hakyll。按照the official site上的教程,我正在尝试扩展路径处理图像以使用字体。我已将site.hs中的代码更改为:

match ("images/*" .||. "fonts/*") $ do
     route idRoute
     compile copyFileCompiler

fonts目录中,我有许多.ttf个字体文件,其权限和所有者与网站的其他静态文件相匹配(所有这些文件都正常工作)。

出于某种原因,在重建网站(使用stack exec site rebuild)之后,这些更新不会反映在二进制文件中,并且到fonts/*的路由会产生404。

如何让Hakyll加载字体?

1 个答案:

答案 0 :(得分:3)

stack exec site rebuild仅重建站点数据(默认情况下,在目标目录中生成的文件,_site)。每当您更改网站来源时,都需要发出stack build

如果您正在运行watch服务器,请重新启动它 - stack build创建一个新的site可执行文件,它不会重新启动旧的运行实例。

如果您只添加了新规则,则不需要在site rebuild构建后执行sitesite buildsite watch应注意到文件中缺少“高速缓存”。但是,如果您修改了现有规则,则需要让Hakyll知道文件不再是最新的。使用site cleansite rebuild清理网站会迫使Hakyll重新生成所有内容。当您拥有大型站点且只有少数文件受更改影响时,您还可以重新保存它们或更改其修改时间(例如,使用touch命令)以节省时间。