我刚刚找到了http://gruntjs.com/configuring-tasks#globbing-patterns,这是我发现的最有用的参考资料。
我一直在看:
有关glob模式语法的更多信息,请参阅node-glob和minimatch文档。
然而,我似乎找不到详尽的语法/用法列表。 These tests可能是最好的参考,但仍然不是特别容易破译。
似乎我必须缺少一些重要的文档来源。
我想知道:
之间的区别path
path/
path/*
path/*.*
path/**
path/**/
path/**/*
path/**/*.*
以及我可能忽略的任何其他重要变体。我猜这在进行node-glob
样式匹配('public/**/*.*'
)和.gitignore
(node_modules
)时有所不同,因为在前者中,您需要明确包含所有内容,很多层,在gitignore中,这是通过忽略任何目录自动处理的。这是对的吗?
答案 0 :(得分:15)
首先,我从未使用过node-glob
或minimatch
个库。但我可能仍然可以提供帮助。对于glob模式匹配,有一种已知的语法,但坦率地说,Google中的快速搜索并没有简短明了。可能这个 - http://hgbook.red-bean.com/read/file-names-and-pattern-matching.html#id381184 - 是我发现的最好的资源。维基百科中的文章详尽且不易阅读 - http://en.wikipedia.org/wiki/Glob_(programming)。
简而言之,恕我直言 node-glob :
*
- 代表文件名的任意数量的字符,但不能代表/
**
- 与*
相同,但跨越文件夹边界[abxy]
- 可以替换列表中的任何一个字符; [0-9]
代表任意数字因此,以你的例子:
path/*
- path
中的所有文件和文件夹都没有记录path/**
- path
中的所有内容path/*.*
- 所有带名字点的文件和文件夹;匹配a.txt
,.hidden
,noextension.
,folder.out
,... 来自 minimatch 文档 - https://github.com/isaacs/minimatch, - 它的功能相同,但使用的是正则表达式更丰富,更难处理的语法。您可以在这里查看综合参考 - http://www.w3schools.com/js/js_regexp.asp。简而言之,path/.*
代表路径下方的任何内容,但不清楚是否递归。你可能会测试它。