blob: 2aa30012e5bc1fc4581b2592852e78ba3f741828 [file] [log] [blame]
var gulp = require('gulp'),
concat = require('gulp-concat'),
imagemin = require('gulp-imagemin'),
gutil = require('gulp-util'),
buffer = require('vinyl-buffer'),
source = require('vinyl-source-stream'),
browserify = require('browserify'),
argv = require('yargs').argv,
reactify = require('reactify'),
uglify = require('gulp-uglify'),
gulpif = require('gulp-if'),
serve = require('gulp-serve'),
envify = require('envify');
gulp.task('styles', function () {
gulp.src(['src/css/normalize.css', 'src/css/base.css'])
.pipe(concat('styles.css'))
.pipe(gulp.dest('./build/css/'));
});
gulp.task('scripts', function () {
// This is needed for envify to remove debug only code from REACT
process.env.NODE_ENV = argv.debug ? '' : 'production';
browserify('./src/js/app.js', { debug: argv.debug ? true : false })
.transform(reactify)
.transform(envify)
.bundle()
.on('error', gutil.log)
.pipe(source('app.js'))
.pipe(buffer())
.pipe(gulpif(!argv.debug, uglify())) // minify only if not debug build.
.on('error', gutil.log)
.pipe(gulp.dest('./build/js/'));
});
gulp.task('images', function () {
gulp.src(['src/img/**/*.png', 'src/img/**/*.gif'])
.pipe(imagemin())
.pipe(gulp.dest('./build/img/'));
gulp.src(['src/img/**/*.svg'])
.pipe(gulp.dest('./build/img'));
});
gulp.task('html', function () {
gulp.src(['src/*.html'])
.pipe(gulp.dest('./build/'));
});
gulp.task('etc', function () {
gulp.src(['src/etc/*'])
.pipe(gulp.dest('./build/etc'));
})
gulp.task('dev', ['build'], function () {
gulp.watch(['src/js/**/*.js', 'src/js/*.json', 'src/js/**/*.jsx'], [ 'scripts' ]);
gulp.watch('src/css/**/*.css', [ 'styles' ]);
gulp.watch('src/img/**', [ 'images' ]);
gulp.watch('src/*.html', ['html']);
gulp.watch('src/etc/**', ['etc']);
});
gulp.task('serve', ['dev'], serve('build'));
gulp.task('build', [ 'styles', 'scripts', 'images', 'html', 'etc' ]);