【问题标题】:Gulp sass (libsass) extremely slow when using return使用 return 时 Gulp sass (libsass) 非常慢
【发布时间】:2016-01-22 09:09:23
【问题描述】:

我是 Gulp 的新手(对 js 不太熟悉)。 当我使用

gulp.task('sass', function () {
  gulp
    .src('myfile.scss')
    .pipe(sourcemaps.init())
    .pipe(sass(myoptions))
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('mypath'))
    .pipe(browserSync.stream({match: '**/*.css'}));
});

编译在几毫秒内完成

但是当我使用时

gulp.task('sass', function () {
  return gulp
    ...
});

编译需要几秒钟。

谁能解释一下为什么?

谢谢。

【问题讨论】:

    标签: javascript performance return gulp libsass


    【解决方案1】:

    Gulp 使用orchestrator 来执行任务。您的任务返回一个承诺或一个流(在您的情况下是一个流),用于排序。

    当你什么都不返回时,调用者无法知道你的任务没有完成,这至少有2个影响:

    • 您可能认为它已经完成了(从日志中),但实际上还没有完成
    • 以下任务可能开始得太早,甚至可能使用旧版本的已编译 CSS 数据

    【讨论】:

    • 好的,谢谢你的回答......所以最好返回一个承诺。现在我只需要检查为什么编译我的 scss 文件需要这么长时间。
    • 很难说,但对我来说,十几个 scss 文件只需要几毫秒(我不使用 browserSync,你确定这不是需要时间吗?)。
    • 好的,只要找出答案。 “问题”来自 sass 选项对象 .pipe(sass(options))options = {outputStyle: 'compressed'}options = {}。当我禁用此行时,编译速度非常快,但是当我设置选项时(即使选项对象为空),编译将永远进行。这有什么原因吗?
    • @ChuckNorris 我不会复制那个。当我传递一个空对象而不是什么都没有时,编译速度对我来说并没有改变。
    猜你喜欢
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多