运行带有“自动更正”选项的格式化程序和整理工具之类的工具时,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的缓存结果时。这是处理此类规则的最佳方法,还是有更好的方法?
答案 0 :(得分:1)
在Shake中,没有原则性的方式来生成替换源文件的规则。给定源代码格式化程序,其他任何事情都不是很有用。 Shake假设在编译过程中输入不会更改。传递--lint
可能会导致棉绒错误,并且与Cloud Shake不兼容。官方建议是在致电shake
之前,在单独的非Shake通行证中进行此类更改。
但是,如果它对您有用并且很有用,我不会太担心。该模式已在Shake中进行了测试,很多人都在做。您可以使用historyDisable
关闭每个文件的云缓存。