本文主要讲配置任务中的filter,包括使用默认fs.Stats方法名和自定义过滤函数。
通过设置filter属性可以实现一些特殊处理逻辑。例如:要清理某个文件夹下的所有空文件夹,这时使用clean任务时,需要判断该文件夹下的哪些是文件,哪些是文件夹,只对空文件执行clean任务。
具体使用方法分为如下两种:
fs.stats是NodeJS的一个类,上边提供了很多对文件判断的方法,具体可以参考这里。
如下将filter设置为‘isFile‘时,如果发现当前文件不是文件时,就不进行clean处理。
1 grunt.initConfig({ 2 clean: { 3 foo: { 4 src: [‘tmp/**/*‘], 5 filter: ‘isFile‘, 6 }, 7 }, 8 });
自定义过滤函数,如果过滤函数返回true,就对当前文件进行处理;返回值是false时,就不处理当前文件。
下边示例是清理tmp下边所有的空文件夹:
1 grunt.initConfig({ 2 clean: { 3 foo: { 4 src: [‘tmp/**/*‘], 5 filter: function(filepath) { 6 return (grunt.file.isDir(filepath) && require(‘fs‘).readdirSync(filepath).length === 0); 7 }, 8 }, 9 }, 10 });
Grunt官网:https://www.gruntjs.net/configuring-tasks
原文:https://www.cnblogs.com/zhaoweikai/p/9713528.html