https://github.com/twitter/heron
Raw File
Tip revision: 5e30d4c33128d5ae6f62239c921728cb8e1ceba5 authored by Sanjeev Kulkarni on 15 August 2017, 05:11:26 UTC
Upgrade gflags to 2.2.1
Tip revision: 5e30d4c
gulpfile.js
var gulp = require('gulp'),
    // Pulls in any Gulp-related metadata
    pkg = require('./package.json'),
    // Use $ to invoke Gulp plugins
    $ = require('gulp-load-plugins')(),
    // All non-Gulp modules here
    del = require('del');

// Define the source and distribution directories
var srcDir = './assets';
var distDir = './static';

// Define asset sources
var SRC = {
  js: srcDir + '/js/**/*.js',
  css: srcDir + '/css/**/*.css',
  sass: srcDir + '/sass/**/*.scss',
  fonts: srcDir + '/fonts/**/*',
  images: srcDir + '/img/**/*'
}

// Define asset distribution destination
var DIST = {
  css: distDir + '/css',
  js: distDir + '/js',
  fonts: distDir + '/fonts',
  images: distDir + '/img',
  all: distDir
}

// JavaScript assets
gulp.task('js', function(done) {
  gulp.src(SRC.js)
    .pipe($.uglify().on('error', function(err) { console.log(err); }))
    .pipe($.concat('app.min.js'))
    .pipe(gulp.dest(DIST.js));
  done();
});

gulp.task('js:watch', function() {
  gulp.watch(SRC.js, gulp.series('js'));
});

// CSS assets
gulp.task('css', function(done) {
  gulp.src(SRC.css)
    .pipe(gulp.dest(DIST.css));
  done();
});

gulp.task('css:watch', function() {
  return gulp.watch(SRC.css, gulp.watch('css'));
});

// Sass assets
gulp.task('sass', function(done) {
  gulp.src(SRC.sass)
    .pipe($.sass().on('error', function(err) { console.log(err); }))
    .pipe($.cleanCss())
    .pipe($.concat('style.min.css'))
    .pipe(gulp.dest(DIST.css));
  done();
});

gulp.task('sass:watch', function() {
  gulp.watch(SRC.sass, gulp.series('sass'));
});

// Fonts
gulp.task('fonts', function(done) {
  gulp.src(SRC.fonts)
    .pipe(gulp.dest(DIST.fonts));
  done();
});

// Images
gulp.task('images', function(done) {
  gulp.src(SRC.images)
    .pipe(gulp.dest(DIST.images));
  done();
});

gulp.task('images:watch', function() {
  gulp.watch(SRC.images, gulp.series('images'));
});

// One-time build; doesn't watch for changes
gulp.task('build', gulp.series('js', 'sass', 'css', 'fonts', 'images'));

// Delete static folder
gulp.task('clean', function(done) {
  del(DIST.all);
  done();
});

// Run in development (i.e. watch) mode
gulp.task('dev', gulp.series('build', gulp.parallel('js:watch', 'sass:watch', 'css:watch', 'images:watch')));

// Help => list tasks
gulp.task('help', function(done) {
  $.taskListing.withFilters(null, 'help')
  done();
});

// Default
gulp.task('default', gulp.series('help'));
back to top