使用gulp watch获得可能的泄漏,每次任务需要更长的时间

时间:2016-03-24 14:00:23

标签: css gulp gulp-watch gulp-sass gulp-concat

我使用gulp在ASP.NET5网站上编译和缩小我的SASS以用作CDN。我编写了一个观察我的* .scss文件的观察者,然后使用依赖项来编译scss,然后将其连接/缩小为一个style.min.css。

我遇到的问题是,项目开放的时间越长,或者至少每次顺序执行gulp任务,它们会长得多,直到我只开发了大约20分钟,并且编译任务花了15秒以上,并且缩小需要25秒以上。每个第一次运行大约需要1或2毫秒,所以我真的输了什么。

这是我的观察者:

gulp.task('Watch:Sass', function () {
    watch(paths.cdn.sassLoc, { verbose: true }, function () {
        gulp.start("Min:css"); 
    });
});

以下是Min:css任务:

gulp.task("Min:css", ["Compile:Sass"], function () {
    return gulp.src([paths.cdn.cssLoc, "!" + paths.cdnMinCssLoc + "**/*.*"])
        .pipe(concat(paths.cdn.cssDest))
        .pipe(cssmin())
        .pipe(plumber({
            handleError: function (err) {
                console.log(err);
                this.emit('end');
            }
        }))
        .pipe(gulp.dest("."));
});

以下是作为依赖项注入的Compile:Sass任务:

gulp.task('Compile:Sass', function () {
    gulp.src(paths.cdn.imagesLoc)
        .pipe(gulp.dest(paths.webroot + '/css/min/images'));
    return gulp.src(paths.cdn.sassLoc).pipe(plumber({
        handleError: function (err) {
            console.log(err);
            this.emit('end');
        }
    }))
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest(paths.cdn.sassDest));
});

可能是因为我使用了退货吗?

任何帮助都会非常感激,因为我必须每半小时左右重新启动一次Visual Studio,这会非常令人沮丧!

我确定我已经包含了所有相关信息,但请询问您是否需要更多信息。

2 个答案:

答案 0 :(得分:3)

在这种情况下,事实上我的回复陈述是在错误的地方。

为了解决这个问题,我不得不取消gulp.src(...)上的返回,我必须在return true gulp任务的末尾添加Compile:Sass。我还完全退出了Min:Css任务,现在我的编译任务需要大约1.5毫秒,而我的最小任务大约需要600us。

这是最后的Compile:Sass任务:

gulp.task('Compile:Sass', function () {
    gulp.src(paths.cdn.imagesLoc)
        .pipe(gulp.dest(paths.webroot + '/css/min/images'));
    gulp.src(paths.cdn.sassLoc).pipe(plumber({
        handleError: function (err) {
            console.log(err);
            this.emit('end');
        }
    }))
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest(paths.cdn.sassDest));

    return true;
});

答案 1 :(得分:0)

马特,你有一个关于你的“Min:css”任务管道的连结。

gulp.task("Min:css", ["Compile:Sass"], function () {
    return gulp.src([paths.cdn.cssLoc, "!" + paths.cdnMinCssLoc + "**/*.*"])
        .pipe(concat(paths.cdn.cssDest))
        ...
        ...
        .pipe(gulp.dest("."));
});

确保你不是一遍又一遍地无限地连接同一个css。我不知道你的paths.cdn.cssLoc指向的是什么。这将考虑更长和更长的处理时间。如果你愿意,你可以称之为泄漏。

相关问题