Files
flood/gulpfile.js
2015-04-08 19:13:41 -04:00

85 lines
2.0 KiB
JavaScript

var gulp = require('gulp'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
watch = require('gulp-watch'),
notify = require('gulp-notify'),
browserSync = require('browser-sync'),
browserify = require('browserify'),
watchify = require('watchify'),
reactify = require('reactify'),
source = require('vinyl-source-stream');
var supportedBrowsers = ['last 2 versions', '> 1%', 'ie >= 8', 'Firefox ESR', 'Opera >= 12'],
jsFiles = [];
var sourceDir = './source/',
destDir = './public/';
var reload = browserSync.reload;
function handleErrors() {
var args = Array.prototype.slice.call(arguments);
notify.onError({
title: "Compile Error",
message: "<%= error.message %>"
}).apply(this, args);
this.emit('end');
}
gulp.task('browser-sync', function() {
return browserSync.init({
port: 3001
});
});
gulp.task('styles', function() {
return gulp.src(sourceDir + 'sass/style.scss')
.pipe(sass({
errLogToConsole: true
}))
.pipe(autoprefixer({
browsers: supportedBrowsers,
map: true
}))
.pipe(browserSync.reload({
stream: true
}))
.pipe(gulp.dest(destDir + 'stylesheets'));
});
gulp.task('scripts', function() {
var bundler = watchify(browserify({
entries: [sourceDir + '/scripts/app.js'],
cache: {},
packageCache: {},
fullPaths: true
}));
bundler.transform(reactify);
function rebundle() {
var stream = bundler.bundle();
return stream.on('error', handleErrors)
.pipe(source('app.js'))
.pipe(gulp.dest(destDir + 'scripts/'));
}
bundler.on('update', function() {
rebundle();
});
return rebundle();
});
gulp.task('watch', function () {
gulp.watch(sourceDir + 'scripts/**/*.js', ['scripts', reload]);
gulp.watch(sourceDir + 'sass/**/*.scss', ['styles', reload]);
});
gulp.task('default', ['scripts', 'styles', 'watch', 'browser-sync']);