Skip to content

Instantly share code, notes, and snippets.

@TrySound
Created August 3, 2016 19:45
Show Gist options
  • Save TrySound/59f346854dc699705dc9141824097fd4 to your computer and use it in GitHub Desktop.
Save TrySound/59f346854dc699705dc9141824097fd4 to your computer and use it in GitHub Desktop.

Incremental build with less

var gulp = require('gulp');
var less = require('gulp-less');
var concat = require('gulp-concat');
var cached = require('gulp-cached');
var remember = require('gulp-remember');
var watch = require('gulp-watch');

var token = 'style-uniq-token';

gulp.task('style', function () {
  return gulp.src('style/**/*.less') // Read
    .pipe(cached(token)) // Remove previously passed files if they are the same
    .pipe(less()) // Expensive process only for new or changed files
    .pipe(remember(token)) // Get back previously passed files if they are not in the stream
    .pipe(concat('bundle.css')) // Combine all together
    .pipe(gulp.dest('dist')); // Write
});

gulp.task('watch', function () {
  watch('style/**/*.less', function (file) {
    var lessFile = file.path; // file.less
    var cssFiles = lessFiles.splice(0, -4) + 'css'; // file.css
    delete cached.caches[token][lessFile]; // forget changed less file
    remember.forget(token, cssFile); // forget result css
  });
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment