gpt4 book ai didi

javascript - Shake FilePatterns 如何用于缩小 JS 和 CSS 文件?

转载 作者:行者123 更新时间:2023-11-29 10:15:34 25 4
gpt4 key购买 nike

.js.css 文件压缩的​​常见做法是创建 .min.js.min.css 文件。问题是 Shake FilePatterns将使用类似 //*.js 的模式将缩小和非缩小文件与此方案匹配。 docs似乎建议为每个像 reg.jsmin.js 做独特的扩展,但我不确定这是我想走的路。如何在 Shake 中解决这个问题?

编辑:问题在于使用 getDirectoryFiles:

js <- getDirectoryFiles "" ["//*.js"]
let jsMins = map (-<.> "min" <.> "js") js
need jsMins

"//*.min.js 的目标工作正常,但 getDirectoryFiles ""["//*.js"] 开始获取生成 .min.js 文件。

最佳答案

我可以想到两种替代方法:

后处理 getDirectoryContents

调用getDirectoryContents 然后过滤掉你不关心的值。像这样的东西:

xs <- getDirectoryFiles "" ["//*.js"]
need [x -<.> "min.js" | x <- xs, takeExtensions x == ".js"]

如果您在规则之外运行此代码,例如在 action 中,那么它是 100% 正确的。如果您在规则中运行代码,那么该规则将运行一次,将出现新文件,然后该规则将再次运行(这也是一个 lint 违规,并且不是很好的构建卫生)。我怀疑您违反了规则,因此这种方法可能是一个不错的方法。

写一个Oracle

如果您在规则内,您可以定义一个类似于 getDirectoryFiles 的 Oracle,但会跳过 min 文件。

newtype JsFiles = JsFiles () deriving (Show,Typeable,Eq,Hashable,Binary,NFData)
addOracle $ \(JsFiles _) -> fmap (\x -> takeExtensions x == ".js") $ getDirectoryFiles "" ["//*.js"]

现在您可以在您的规则中使用askOracle $JsFiles (),它只会在添加新的非min 文件时发生变化。

关于javascript - Shake FilePatterns 如何用于缩小 JS 和 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22735289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com