在gulp.dest后删除gulp.src文件?

我有一个场景,我的一个客户端想要将LESS文件放到src目录(通过FTP),并将它们自动输出为一个build目录的CSS。 对于每个LESS文件,一旦它的结果CSS文件被创build,它应该从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

一旦你pipe它,它会清理你的src目录。 当然,在不同设置的备份上进行testing,如果无法正常工作,请在完成较less任务后立即执行第二项任务并使用一些任务依赖项来运行清理。


如果我是正确的,当我尝试在gulp.dest之后进行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()); }); 

这是为了不注意的任务。 然后,您应该在* .less文件上使用watch ,但是您应该执行remove-less运行而不是remove-less运行。 为什么? 由于任务依赖性。

当你调用remove-less任务时,只有在任务完成的时候才会启动。 这样,文件只会在你的less编译结束后被删除,而不是在抛出错误的时候。

这可能不是一个完美的方法,因为我不是一个专家,但它是一个安全和工作的解决scheme,供您使用。 理解海事组织也很清楚。

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']);