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

Xåp*_* - 5 javascript file mv node.js gulp

我有一个场景,我的一个客户想要将 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"));
Run Code Online (Sandbox Code Playgroud)

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

soe*_*guy 3

使用gulp-clean

一旦你通过管道传输它,它就会清理你的 src 目录。当然,请在具有不同设置的备份上对其进行测试,如果您无法使其正常工作,请毫不犹豫地执行第二个任务,并在较少的任务完成后使用一些任务依赖项来运行清理。


如果我是对的,当我尝试gulp-clean在 后进行管道传输gulp.dest时,出现了问题,所以我有另一种方法来执行此操作,这是一个具有任务依赖性的示例。

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());
});
Run Code Online (Sandbox Code Playgroud)

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

当您调用remove-less任务时,它只会在less任务完成后开始。这样,只有在 less 编译结束后,这些文件才会被删除,而不是在中间抛出错误。

由于我不是专家,这可能不是使其正常工作的完美方法,但它是一个安全且有效的解决方案供您使用。IMO 的理解也很清楚。

  • gulp-clean 已弃用。 (4认同)