【问题标题】:Use Gulp.js to Delete a File Wherever It's Found使用 Gulp.js 删除找到的文件
【发布时间】:2018-03-05 19:30:30
【问题描述】:

我想删除 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 上做错了...

【问题讨论】:

    标签: gulp


    【解决方案1】:

    原来是我将exec 块与glob 语句结合起来导致了我自己的问题。一旦我完成了这些单独的任务并让任务build 调用pelican 用于exec 块和rmkjunk 用于glob 语句,它就起作用了。

    值得注意的是,这产生了需要运行顺序任务与并行任务的新问题,this SO answer addresses。希望这可以帮助一些未来困惑的人。

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2015-09-29
      • 1970-01-01
      • 2011-02-10
      相关资源
      最近更新 更多