我一生都无法弄清楚如何获得这项工作。我正在使用的模块的 grunt 配置(grunt-sloc)需要Files Object Format。使用它,我希望能够立即匹配顶级目录下的所有常规文件(即非目录)。
例如,假设这是我的目录结构,其中+
表示目录并-
表示常规文件:
repo
+ dir
- unwanted.js
- server.js
如何使用 Grunt 的文件对象格式匹配server.js
但不匹配dir
or dir/unwanted.js
?
这是它在紧凑格式中的外观:
mine: {
src: [
'*'
]
}
或者,在 bash 中,你会像这样得到它们:
ls -p | grep -v /;
这是我尝试使用Files Object Format的方法:
这不起作用:
mine: { files: { '.': ['*'] } }
这也不是:
mine: { files: { './': ['*'] } }
甚至没有这个:
mine: { files: { './': ['*/server.js'] } }
也不是这个:
mine: { files: { './': ['server.js'] } }
这有效,但它递归运行,我不想要:
mine: { files: { './': ['**/server.js'] } }
在做了一堆测试和代码阅读之后,我已经验证它实际上是minimatch包(Grunt 的依赖),它没有返回我正在寻找的匹配项。所以这不是我正在使用的 grunt 模块;这是我的咕噜声配置。
由于 Grunt 如此受欢迎,而且这似乎是一个非常常见的用例,我猜想有办法做到这一点。有谁知道那是什么?
更新
正如所RobC
指出的,我的最后一个例子不起作用。它server.js
在我的node_modules
目录中找到 ',这让我认为它正在工作。