我想删除任何名为.DS_Store的文件,在一个目录下,Gulp帮助构建。然而,Gulp并不是通过它自己的管道来传递所有的文件,所以我认为我不能在这里用乙烯基来做聪明的事情。相反,大多数文件是通过Gulp用child_process调用的静态站点生成器生成的。
问题是,当这个静态站点生成器在源目录中遇到这些文件时,它没有一个参数可以跳过这些文件;它只会盲目地遍历它们。我不想要这些文件,所以我想让Gulp把它们移到任何找到它们的地方。
我试过了,例如del(['output/**/.DS_Store'], cb);,但那不管用。有什么想法吗?
更新:在发现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);,就会输出预期的文件。所以也许我是在正确的轨道上,但做错了什么德尔..。
发布于 2017-09-25 03:11:33
结果是,我将exec块与glob语句组合在一起,从而导致了自己的问题。一旦我完成了这些单独的任务,任务build调用pelican表示exec块,rmkjunk调用glob语句之后,它就工作了。
值得注意的是,这造成了一个新的问题,即需要运行顺序任务和并行任务,即this SO answer addresses。希望这能帮助一些未来困惑的人。
https://stackoverflow.com/questions/46394867
复制相似问题