2015-01-17 01:37:21 +00:00
|
|
|
var gulp = require('gulp');
|
|
|
|
var gulpif = require('gulp-if');
|
|
|
|
var minifyHTML = require('gulp-minify-html');
|
|
|
|
var minifyCSS = require('gulp-minify-css');
|
|
|
|
var autoprefixer = require('gulp-autoprefixer');
|
|
|
|
var uglify = require('gulp-uglify');
|
2015-02-05 00:37:34 +00:00
|
|
|
var gzip = require('gulp-gzip');
|
2015-01-17 01:37:21 +00:00
|
|
|
var browserify = require('browserify');
|
|
|
|
var source = require('vinyl-source-stream');
|
|
|
|
var streamify = require('gulp-streamify');
|
|
|
|
var reactify = require('reactify');
|
|
|
|
var strictify = require('strictify');
|
|
|
|
var watchify = require('watchify');
|
|
|
|
|
|
|
|
var argv = require('yargs')
|
|
|
|
.alias('p', 'production')
|
|
|
|
.argv;
|
|
|
|
|
|
|
|
if (argv.production) {
|
|
|
|
process.env['NODE_ENV'] = 'production';
|
|
|
|
}
|
|
|
|
|
|
|
|
gulp.task('html', function() {
|
|
|
|
gulp.src('./src/*.html')
|
|
|
|
.pipe(minifyHTML())
|
|
|
|
.pipe(gulp.dest('./dist'));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('css', function() {
|
2015-02-16 20:53:01 +00:00
|
|
|
gulp.src('./src/css/*.css')
|
2015-01-17 01:37:21 +00:00
|
|
|
.pipe(autoprefixer())
|
|
|
|
.pipe(minifyCSS())
|
2015-02-16 20:53:01 +00:00
|
|
|
.pipe(gulp.dest('./dist/css'));
|
2015-01-17 01:37:21 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('js', function() {
|
|
|
|
return js(false);
|
|
|
|
});
|
|
|
|
|
|
|
|
function js(watch) {
|
|
|
|
var bundler, rebundle;
|
|
|
|
bundler = browserify('./src/js/app.js', {
|
|
|
|
debug: !argv.production,
|
|
|
|
cache: {},
|
|
|
|
packageCache: {},
|
|
|
|
fullPaths: watch
|
|
|
|
});
|
|
|
|
|
|
|
|
if (watch) {
|
|
|
|
bundler = watchify(bundler);
|
|
|
|
}
|
|
|
|
|
|
|
|
bundler
|
|
|
|
.transform(reactify)
|
|
|
|
.transform(strictify);
|
|
|
|
|
|
|
|
rebundle = function() {
|
|
|
|
var stream = bundler.bundle();
|
|
|
|
stream.on('error', console.log);
|
|
|
|
return stream
|
|
|
|
.pipe(source('bundle.js'))
|
|
|
|
.pipe(gulpif(argv.production, streamify(uglify())))
|
|
|
|
.pipe(gulp.dest('./dist'));
|
|
|
|
};
|
|
|
|
|
|
|
|
bundler.on('time', function(time) {
|
|
|
|
console.log('JS bundle: ' + time + ' ms');
|
|
|
|
});
|
|
|
|
bundler.on('update', rebundle);
|
|
|
|
return rebundle();
|
|
|
|
}
|
|
|
|
|
2015-02-16 20:53:01 +00:00
|
|
|
gulp.task('fonts', function() {
|
|
|
|
gulp.src('./src/font/*')
|
|
|
|
.pipe(gulp.dest('./dist/font'));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('gzip', ['html', 'css', 'js', 'fonts'], function() {
|
|
|
|
gulp.src('./dist/**/!(*.gz)')
|
2015-02-05 00:37:34 +00:00
|
|
|
.pipe(gzip())
|
|
|
|
.pipe(gulp.dest('./dist'));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('gzip:watch', function() {
|
2015-02-16 20:53:01 +00:00
|
|
|
gulp.src('./dist/**/*.{html,css,js}')
|
2015-02-05 00:37:34 +00:00
|
|
|
.pipe(gzip())
|
|
|
|
.pipe(gulp.dest('./dist'));
|
|
|
|
});
|
|
|
|
|
2015-01-17 01:37:21 +00:00
|
|
|
gulp.task('watch', ['default'], function() {
|
2015-02-17 00:27:02 +00:00
|
|
|
gulp.watch('./dist/**/*.{html,css,js}', ['gzip:watch'])
|
2015-01-17 01:37:21 +00:00
|
|
|
gulp.watch('./src/*.html', ['html']);
|
2015-02-17 00:27:02 +00:00
|
|
|
gulp.watch('./src/css/*.css', ['css']);
|
2015-01-17 01:37:21 +00:00
|
|
|
return js(true);
|
|
|
|
});
|
|
|
|
|
2015-02-16 20:53:01 +00:00
|
|
|
gulp.task('default', ['html', 'css', 'js', 'fonts', 'gzip']);
|