我使用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,这会非常令人沮丧!
我确定我已经包含了所有相关信息,但请询问您是否需要更多信息。
答案 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
指向的是什么。这将考虑更长和更长的处理时间。如果你愿意,你可以称之为泄漏。