当点是扩展的一部分时,ack 类型不起作用

ack type doesnt work when dot is part of extension

尝试使用 this method 来消除垃圾文件被 ack,但是我的定义不起作用:

--type-set=map=.min.map
--no-map               

这仍然会产生结果

$ ack MARK -l                       
public/js/vendor/jquery-2.1.1.min.map

非常令人沮丧。

我的解决方法是--ignore-file=is:jquery-2.1.1.min.map

不过我想删除所有 *.min.map 文件。

我真的不明白为什么ack必须发明一种新的易碎配置语法。支持 glob 有什么问题。

What is wrong with supporting globs.

ack 不支持文件类型检测中的通配,因为通配在 *nix 和 Windows 之间是不同的。使用 Unix 风格的 globbing 语法的基于 glob 的规则会让基于 Windows 的用户感到困惑。 Perl 正则表达式在所有平台上都是相同的,并且比 globbing 灵活得多。

要解决匹配 .min.map 文件的问题,如果您的单个扩展名不起作用,您可以使用如下正则表达式:

--ignore-file=match:[.]min[.]map$

ack 在其默认规则集中使用了许多类似的规则。您可以使用 ack --dump 获取 ack 规则的转储,这可以方便地查看其他文件类型的处理方式。

$ ack --dump | ack =match:
  --ignore-file=match:/[.-]min[.]js$/
  --ignore-file=match:/[.]css[.]map$/
  --ignore-file=match:/[.]css[.]min$/
  --ignore-file=match:/[.]js[.]map$/
  --ignore-file=match:/[.]js[.]min$/
  --ignore-file=match:/[.]min[.]css$/
  --ignore-file=match:/[._].*\.swp$/
  --ignore-file=match:/^#.+#$/
  --ignore-file=match:/core\.\d+$/
  --ignore-file=match:/~$/