Gulp 只编译已更改的文件

Gulp 只编译已更改的文件,gulp,less,gulp-watch,gulp-changed,Gulp,Less,Gulp Watch,Gulp Changed,我有一个问题,当我运行gulpwatch->runtaskstyles:build时,我所有的小文件都被重新编译了。如何只编译已更改的文件 gulp.task('styles:build', function () { return gulp.src(pathes.src.styles) .pipe(changed(pathes.build.styles), {extension: '.css'}) .pipe(print(function(filepat

我有一个问题,当我运行gulpwatch->runtaskstyles:build时,我所有的小文件都被重新编译了。如何只编译已更改的文件

gulp.task('styles:build', function () {
    return gulp.src(pathes.src.styles)
        .pipe(changed(pathes.build.styles), {extension: '.css'})
        .pipe(print(function(filepath) {
            return "➔ file was changed: " + filepath;
        }))
        .pipe(plumber())
        .pipe(less({
            plugins: [autoprefix, cleanCSSPlugin],
            paths: ['./', 'web/styles']
        }))
        .pipe(gulp.dest(pathes.build.styles))
});


gulp.task('watch', function() {
   gulp.watch(pathes.src.styles, ['styles:build'])
});

您需要修改下面的行以添加结束父项:

.pipe(changed(pathes.build.styles, {extension: '.css'}))
正如我在第一次运行任务时所警告的,它可能会通过所有文件

我想我找到了解决办法 只需安装lessChanged=require('gulp-less-changed') 把他也包括在内

.pipe(lessChanged())
.pipe(less())

它是在每次更改较少的文件时运行所有文件,还是仅在第一次运行“监视”任务时才运行?我相信这是预期的行为,第一次所有文件都将通过gulp changed。@标记任何更改开始编译所有文件,例如我添加';或者,任何更改,然后在更改的管道末尾运行完整任务样式:buildYou需要另一个关闭参数。@标记您可以编写示例吗?.pipe(更改的(paths.build.styles),{extension:'.css'})).pipe(更改的(paths.build.styles,{extension:'.css'})-写入,但仍然工作不好,然后我会尝试gulp cached,看到这个答案好的,我稍后再试,我需要去sleepcached-帮助我,现在只编译更改的文件,但我有新问题)缓存没有看到导入较少的文件,当我更改文件时-他编译,但主文件是相同的