使用Gulp.js删除文件,无论它在哪里找到

时间:2017-09-24 21:08:20

标签: gulp

我想在Gulp帮助构建的目录中的任何位置删除任何名为.DS_Store的文件。但是,Gulp没有通过它自己的管道传递所有文件,所以我不认为我可以在这里用乙烯基做聪明的事情。相反,大多数文件是通过Gulp使用child_process调用的静态站点生成器生成的。

问题是,这个静态站点生成器在源目录中遇到这些文件时没有跳过这些文件的参数。它会盲目地将它们带过来。我不想要这些文件,所以我想让Gulp将它们移到任何找到的地方。

我试过,例如del(['output/**/.DS_Store'], cb);,但这不起作用。有什么想法吗?

更新:在发现I need something fancier than del后,我尝试使用glob来解决此问题,但我必须做错了:

const glob = require('glob');
const del = require('del');

gulp.task('build', function(cb) {
    exec('pelican', function(err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
        cb(err);
    });

    glob('output/**/.DS_Store', function(err, files) {
        files.forEach( function(file) {
            del([file]);
        });
    });
});

更新2:由于glob没有删除任何文件,但是,我注意到如果我插入console.log(file);,则会输出预期的文件。所以也许我正走在正确的轨道上,但是对del ...做错了。

1 个答案:

答案 0 :(得分:0)

通过将exec块与glob语句相结合,我得出了自己的问题。一旦我完成了这些单独的任务,其任务buildpelican块调用exec,为rmkjunk语句调用glob

值得注意的是,这创造了一个需要运行顺序与并行任务的新问题,this SO answer addresses。希望这有助于一些未来困惑的人。