Path 关于全球化模式的困惑

Path 关于全球化模式的困惑,path,gruntjs,glob,Path,Gruntjs,Glob,在GruntJS网站上,它有一个,但有一点我有点困惑 foo/***.js将匹配foo/ 子目录及其所有子目录 我看到双星号匹配所有路径,包括/,但如果文件位于foo路径中,这是否意味着它正在尝试匹配名为foo//*.js的路径 在我发现这一点之前,我一直在尝试类似于foo/{,***}*.js的东西,但这从来没有真正达到我想要的效果,我有点困惑为什么这样做不起作用。双星号意味着模式应该执行递归匹配;i、 e.查看它找到的所有子目录。例如,模式将匹配: 1. foo/bar.js 2. foo/

在GruntJS网站上,它有一个,但有一点我有点困惑

foo/***.js
将匹配
foo/
子目录及其所有子目录

我看到双星号匹配所有路径,包括
/
,但如果文件位于
foo
路径中,这是否意味着它正在尝试匹配名为
foo//*.js
的路径


在我发现这一点之前,我一直在尝试类似于
foo/{,***}*.js的东西,但这从来没有真正达到我想要的效果,我有点困惑为什么这样做不起作用。

双星号意味着模式应该执行递归匹配;i、 e.查看它找到的所有子目录。例如,模式将匹配:

1. foo/bar.js
2. foo/baz.js
3. foo/bar/baz.js
4. foo/bar/baz/qux.js
它将与
foo.txt
文件不匹配。尽管如此,诸如
foo/**
之类的模式将递归地匹配所有内容(
txt
js
css
等)


然而,像
foo/*.js
这样的模式将只匹配1和2,因为它不是递归模式。

我理解这一部分。让我困惑的是,双星号后面有一条斜线。斜杠在这里不被解释为文字吗?我不这么认为,不。您使用的模式实际上在幕后转换为正则表达式,因此“magic”
*
被替换为字符类。它与
foo//qux.txt
不匹配,因为扩展名错误。哎呀,
.txt
是一个打字错误,应该是
.js
。现在已经纠正了。