Shake可以更改源文件吗?

时间:2019-09-04 13:34:31

标签: shake-build-system

运行带有“自动更正”选项的格式化程序和整理工具之类的工具时,Rule的输入和输出可能是同一文件;例如:

  "//*.hs" %> \out ->
    cmd_ "ormolu" "-m" "inplace" out

-- OR

  batch 10 ("//*.hs" %>)
    ( \out -> do
      cmd_ "ormolu" "-m" "inplace" out
      pure out
    )
    (cmd_ "hlint")

这似乎可以“正确地”工作(如果源文件经过need修改并已更改,则重新运行该规则),但是我们不确定这是巧合还是shake按设计工作-尤其是当我们开始考虑来自shakeShare或将来的Cloud Shake的缓存结果时。这是处理此类规则的最佳方法,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

在Shake中,没有原则性的方式来生成替换源文件的规则。给定源代码格式化程序,其他任何事情都不是很有用。 Shake假设在编译过程中输入不会更改。传递--lint可能会导致棉绒错误,并且与Cloud Shake不兼容。官方建议是在致电shake之前,在单独的非Shake通行证中进行此类更改。

但是,如果它对您有用并且很有用,我不会太担心。该模式已在Shake中进行了测试,很多人都在做。您可以使用historyDisable关闭每个文件的云缓存。