删除吞咽.在gulp.dest之后的SRC文件

Removing gulp.src files after gulp.dest?

本文关键字:之后 SRC 文件 dest gulp 删除      更新时间:2023-09-26

我有一个场景,我的客户端希望将LESS文件放入src目录(通过FTP),并使它们自动作为CSS输出到build目录。对于每个LESS文件,一旦创建了生成的CSS文件,就应该将其从src目录中删除。我如何在Gulp中做到这一点?

我当前的gulpfile.js是:

var gulp = require("gulp");
var watch = require("gulp-watch");
var less = require("gulp-less");
watch({ glob: "./src/**/*.less" })
  .pipe(less())
  .pipe(gulp.dest("./build"));

这成功地检测到新的LESS文件被放入src目录,并将CSS文件输出到build。但是它不会在之后清理LESS文件。(

使用gulp-clean

它将清理你的src目录一旦你管道它。当然,在不同设置的备份上测试它,如果你不能使它正常工作,不要犹豫,创建第二个任务,并在less任务完成后使用一些任务依赖项来运行clean。


如果我是对的,当我试图在gulp.dest之后管道gulp-clean时,出现了问题,所以我有另一种方法来做到这一点,这里有一个任务依赖的例子。

var gulp = require('gulp'),
    less = require('gulp-less'),
    clean = require('gulp-clean');
gulp.task('compile-less-cfg', function() {
    return gulp.src('your/less/directory/*.less')
               .pipe(less())
               .pipe('your/build/directory'));
});
gulp.task('remove-less', ['less'], function(){
    return gulp.src('your/less/directory)
               .pipe(clean());
});

这是不观看任务。然后,您应该在*上使用watch。更少的文件,但您应该得到任务remove-less而不是less运行。为什么?因为任务依赖。

当您调用remove-less任务时,它只会在less任务完成后启动。这样,文件只会在less编译结束时被删除,而不会在编译过程中抛出错误。

这可能不是一个完美的方法来得到这个工作,因为我不是一个专家,但这是一个安全的和工作的解决方案,你使用。在我看来,这也很容易理解。

不支持使用gulp-clean。使用npm模块del

npm install --save-dev del

这是你应该如何使用它。

var gulp = require('gulp');
var del = require('del');
gulp.task('clean:mobile', function () {
  return del([
    'dist/report.csv',
    // here we use a globbing pattern to match everything inside the `mobile` folder
    'dist/mobile/**/*',
    // we don't want to clean this file though so we negate the pattern
    '!dist/mobile/deploy.json'
  ]);
});
gulp.task('default', ['clean:mobile']);