我刚刚找到 http://gruntjs.com/configuring-tasks#globbing-patterns ,这是我找到的最有用的引用资料。
我一直在看:
For more on glob pattern syntax, see the node-glob and minimatch documentation.
然而,我似乎找不到详尽的语法/用法列表。 These tests可能是最好的引用,但仍然不是特别容易破译。
看来我一定是遗漏了一些重要的文档来源。
我想知道两者之间的区别:
path
path/
path/*
path/*.*
path/**
path/**/
path/**/*
path/**/*.*
以及我可能省略的任何其他相关的重要变体。我猜这在进行 node-glob
样式匹配 ('public/**/*.*'
) 和 .gitignore
(node_modules
),因为在前者中,你需要显式地包含所有内容,很多层很深,而在 gitignore 中,这是通过忽略任何目录来自动处理的。这是正确的吗?
最佳答案
首先,我从未使用过 node-glob
或 minimatch
库。但也许我仍然可以提供帮助。 glob 模式匹配有一种 known 语法,但坦率地说,在 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 , - 它的作用相同,但使用了 Regular Expressions 的更丰富且稍微困难的语法。您可以在这里寻找全面的引用资料 - http://www.w3schools.com/js/js_regexp.asp .简而言之,path/.*
代表路径下方的任何内容,但不清楚是否递归。你可能会测试它。
关于javascript - Node/JavaScript glob 文件/路径匹配语法、通配符等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222093/