2016-03-24 8 views
1

gulpを使用して、SAS5をWebサイトでコンパイルし、CDNとして使用するようにしています。私は自分の* .scssファイルを監視するウォッチャーを作成した後、依存関係を使用してscssをコンパイルし、それを1つのstyle.min.cssに連結/縮小します。gulp watchを使用してリークが発生する可能性があります。毎回多くの時間がかかります。

私が抱えている問題は、プロジェクトが開いている時間が長いほど、または少なくともGULPタスクが実行されるたびに、私が約20分間だけ開発していた時点までかなり長くなります。コンパイルタスクは15秒以上かかり、minifyは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を30分ごとに再起動する必要があるので、非常に感謝します。

私は関連性のあるものはすべて含めていますが、これ以上の情報が必要かどうか尋ねてください。

答えて

2

このケースでは、実際には間違った場所にある私のリターンステートメントでした。

問題を解決するために、私はgulp.src(...)の返品をキャンセルしなければならなかったので、をCompile:Sass gulpタスクの最後に追加する必要がありました。私はまた、Min:Cssタスクのリターンを完全に取り除いたので、私のコンパイルタスクは約1.5msかかり、私のミニタスクは約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; 
}); 
+0

これは 'return true;'が 'gulp.src'の直後に実行されるからです。これは、gulp.srcとパイプ呼び出しが非同期であるために発生します。このファイルは、コンパイル関数が制御をgulpに戻した後、効果的にディスクに書き込まれます。 – phippu

0

Matt、「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が何を指しているのかはわかりません。これは、より長い処理時間とより長い処理時間を説明します。あなたが望むなら、それをリークと呼ぶことができます。

+0

こんにちは、返事が遅れて申し訳ありません、私はインターネットを持っていません。 paths.cdn.cssLocは "./wwwroot/css/**/*.css"です。しかし私は ''! ''を使っています。 + paths.cdnMinCssLoc + "**/*。*" '私はコンパイルからそのパスを除外すると考えました。 –

+0

存在しないパスは除外しています。 ''!」 + paths.cdnMinCssLoc + "**/*。*" 'は'!./ wwwroot/css/**/*。css **/*。* 'に展開され、構文的には間違っています。良い練習として、あなたのパスを '/'で終わらせてください。とにかく、それを確認してください。 –

+1

私はそれを修正していないその男を変更しました。問題は確かに私の返信文だった、私は質問に答えを追加します。 –

関連する問題