Gruntjs 如何确保grunt只选择文件(而不是文件夹)?

Gruntjs 如何确保grunt只选择文件(而不是文件夹)?,gruntjs,grunt-contrib-concat,Gruntjs,Grunt Contrib Concat,我正在尝试将项目中的所有JS库连接到一个文件中。因此,我使用以下文件选择器在grunt中设置了一个concat任务: dist : { src : ["public/lib/**/*.js"], dest : "public/lib.concat.js" } 到目前为止还不错。但是,我们在项目中使用了。因此,在public/lib中有一个sprintf.js目录,该目录由grunt中的src选择器匹配 其结果是: $ grunt Running "concat:dist" (conc

我正在尝试将项目中的所有JS库连接到一个文件中。因此,我使用以下文件选择器在grunt中设置了一个
concat
任务:

dist : {
  src  : ["public/lib/**/*.js"],
  dest : "public/lib.concat.js"
}
到目前为止还不错。但是,我们在项目中使用了。因此,在
public/lib
中有一个
sprintf.js
目录,该目录由grunt中的
src
选择器匹配

其结果是:

$ grunt
Running "concat:dist" (concat) task
Warning: Unable to read "public/lib/sprintf.js" file (Error code: UNKNOWN). Use --force to continue.
我知道我可以简单地为
sprintf.js
目录选择一个不同的名称,但我想知道是否有办法告诉grunt只选择实际的文件,而不是目录。

用于忽略目录:

dist : {
  src  : ["public/lib/**/*.js"],
  dest : "public/lib.concat.js",
  filter: function(filepath) {
    return !grunt.file.isDir(filepath);
  }
}
用于忽略目录:

dist : {
  src  : ["public/lib/**/*.js"],
  dest : "public/lib.concat.js",
  filter: function(filepath) {
    return !grunt.file.isDir(filepath);
  }
}

这应该更容易。您可以使用感叹号指针排除:

dist : {
  src  : ["public/lib/**/*.js", "!public/lib/sprintf.js" ],
  dest : "public/lib.concat.js"
}

这应该更容易。您可以使用感叹号指针排除:

dist : {
  src  : ["public/lib/**/*.js", "!public/lib/sprintf.js" ],
  dest : "public/lib.concat.js"
}
我确实想匹配子目录。我只想让它读取目录
sprintf.js
中的文件。但是grunt试图像读取文件一样读取目录。我确实希望匹配子目录。我只想让它读取目录
sprintf.js
中的文件。但是grunt试图读取目录,就像它是一个文件一样。