2014-01-19 40 views
1

我想将我们项目中的所有JS库连接成一个文件。所以我成立了一个咕噜任务concat,具有以下文件选择:如何确保grunt只选择文件(不是文件夹)?

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

到目前为止好。但是,我们在我们的项目中使用了sprintf.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目录选择一个不同的名字,但我想知道是否有一种方法来告诉咕噜只选择实际的文件,而不是目录。

回答

4

使用filter option忽略目录:

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

我想要匹配子目录。我只是想让它读取目录'sprintf.js'内的文件。但咕噜声试图读取目录,就好像它是一个文件一样。 –

+0

我更新了我的答案,检查是否可行 –

+1

完美。谢谢 :) –

0

它应该是更容易。你可以用一个感叹号指针排除:

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