[英]Grunt Files Object Format: All regular files files immediately under top level directory
我无法弄清楚我的生活如何得到这项工作。 我正在使用的模块( grunt-sloc )的grunt配置需要Files Object Format 。 使用这个,我希望能够匹配顶级目录下的所有常规文件(即非目录)。
例如,假设这是我的目录结构,其中+
表示目录, -
表示常规文件:
repo
+ dir
- unwanted.js
- server.js
如何使用Grunt的文件对象格式来匹配server.js
而不是dir
或dir/unwanted.js
?
这就是Compact Fomat的外观 :
mine: {
src: [
'*'
]
}
或者,在bash中,你会得到这样的:
ls -p | grep -v /;
这是我尝试使用Files对象格式的内容 :
这不起作用:
mine: { files: { '.': ['*'] } }
这也不是:
mine: { files: { './': ['*'] } }
甚至不是这样的:
mine: { files: { './': ['*/server.js'] } }
这不是:
mine: { files: { './': ['server.js'] } }
这是有效的,但它以递归方式运行,我不想要:
mine: { files: { './': ['**/server.js'] } }
在做了一堆测试和代码阅读之后,我已经确认它实际上是minimatch包(Grunt的依赖 ),它没有返回我正在寻找的匹配项。 所以它不是我使用的咕噜模块; 这是我的笨拙配置。
由于Grunt如此受欢迎,这似乎是一个非常常见的用例,我猜测有一种方法可以做到这一点。 有谁知道那是什么?
作为RobC
指出的那样,我的最后一个例子是行不通的。 它正在我的node_modules
目录中获取server.js
,这让我觉得它正在运行。
首先使用文件对象格式方法列出的示例FWIW对我来说也不起作用,包括你的最后一个:
// Although this worked for you, this failed for me...
mine: {
files: {
'./': ['**/server.js']
}
}
我能让它工作的唯一方法是匹配所有内容,然后使用Grunt globbing模式否定顶级目录。
虽然以下要点演示了对我有用的内容,但它确实需要知道/配置您要排除的顶级目录的名称:
给定目录设置如下:
repo
│
├─── dir
│ │
│ └─── unwanted.js
│
├─── foo.js
│
├─── Gruntfile.js
│
├─── node_modules
│ │
│ └─── ...
│
├─── package.json
│
└─── server.js
...和Gruntfile.js
配置如下:
module.exports = function(grunt) {
grunt.initConfig({
sloc: {
mine: {
files: {
'.': [
'**', // Match everything and add to the results set.
// Explicitly state which directories under the top
// level directory to negate from the results set.
'!**/node_modules/**',
'!**/dir/**',
// Files can be negated from the results set too.
'!**/Gruntfile.js' //
]
}
}
}
});
grunt.loadNpmTasks('grunt-sloc');
grunt.registerTask('default', [
'sloc:mine'
]);
};
通过CLI正确运行grunt
导致仅两个文件的grunt-sloc报告统计信息,即foo.js
和server.js
。
正如所料,由于JSON是不受支持的语言,因此省略了package.json
统计信息。
我发现这篇文章的答案在解释如何开始的模式方面提供了相当丰富的信息!
从初始返回的数组中排除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.