Created
May 31, 2016 17:15
-
-
Save andrelashley/c10a16da1831c04b7ff2272ee5d587bb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var connect = require('gulp-connect'); | |
var open = require('gulp-open'); | |
var concat = require('gulp-concat'); | |
var $ = require('gulp-load-plugins')(); | |
var gulp = require('gulp'); | |
var gutil = require('gulp-util'); | |
var gulpif = require('gulp-if'); | |
var autoprefixer = require('gulp-autoprefixer'); | |
var cssmin = require('gulp-cssmin'); | |
var less = require('gulp-less'); | |
var concat = require('gulp-concat'); | |
var plumber = require('gulp-plumber'); | |
var buffer = require('vinyl-buffer'); | |
var source = require('vinyl-source-stream'); | |
var babelify = require('babelify'); | |
var browserify = require('browserify'); | |
var watchify = require('watchify'); | |
var uglify = require('gulp-uglify'); | |
var sourcemaps = require('gulp-sourcemaps'); | |
var config = { | |
port: 3000, | |
devBaseUrl: 'http://localhost', | |
paths: { | |
html: './app/*.html', | |
js: './app/**/*.js', | |
dist: './dist', | |
mainJs: './app/main.js' | |
// root: ['dist'], | |
// port: config.port, | |
// base: config.devBaseUrl, | |
// livereload: true | |
} | |
} | |
var dependencies = [ | |
'alt', | |
'react', | |
'react-dom', | |
'react-router', | |
'underscore' | |
]; | |
gulp.task('webserver', function () { | |
connect.server({ | |
livereload: true, | |
port: config.port | |
}); | |
}); | |
gulp.task('open', ['webserver'], function () { | |
gulp.src('index.html') | |
.pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/' })); | |
}); | |
gulp.task('vendor', function() { | |
return gulp.src([ | |
'bower_components/jquery/dist/jquery.js', | |
]).pipe(concat('vendor.js')) | |
.pipe(gulp.dest('js/')); | |
}); | |
gulp.task('browserify-vendor', function () { | |
return browserify() | |
.require(dependencies) | |
.bundle() | |
.pipe(source('vendor.bundle.js')) | |
.pipe(buffer()) | |
.pipe(gulp.dest('js/')); | |
}); | |
gulp.task('browserify', ['browserify-vendor'], function () { | |
return browserify({ entries: 'app/main.js', debug: true }) | |
.external(dependencies) | |
.transform(babelify, { presets: ['es2015', 'react'] }) | |
.bundle() | |
.pipe(source('bundle.js')) | |
.pipe(buffer()) | |
.pipe(sourcemaps.init({ loadMaps: true })) | |
.pipe(sourcemaps.write('.')) | |
.pipe(gulp.dest('js/')); | |
}); | |
gulp.task('browserify-watch', ['browserify-vendor'], function () { | |
var bundler = watchify(browserify({ entries: 'app/main.js', debug: true }, watchify.args)); | |
bundler.external(dependencies); | |
bundler.transform(babelify, { presets: ['es2015', 'react'] }); | |
bundler.on('update', rebundle); | |
return rebundle(); | |
function rebundle() { | |
var start = Date.now(); | |
return bundler.bundle() | |
.on('error', function (err) { | |
gutil.log(gutil.colors.red(err.toString())); | |
}) | |
.on('end', function () { | |
gutil.log(gutil.colors.green('Finished rebundling in', (Date.now() - start) + 'ms.')); | |
}) | |
.pipe(source('bundle.js')) | |
.pipe(buffer()) | |
.pipe(sourcemaps.init({ loadMaps: true })) | |
.pipe(sourcemaps.write('.')) | |
.pipe(gulp.dest('js/')); | |
} | |
}); | |
var sassPaths = [ | |
'bower_components/foundation-sites/scss', | |
'bower_components/motion-ui/src' | |
]; | |
gulp.task('styles', function() { | |
return gulp.src('content/scss/app.scss') | |
.pipe($.sass({ | |
includePaths: sassPaths | |
}) | |
.on('error', $.sass.logError)) | |
.pipe($.autoprefixer({ | |
browsers: ['last 2 versions', 'ie >= 9'] | |
})) | |
.pipe(gulp.dest('css/')); | |
}); | |
gulp.task('default', ['styles', 'vendor', 'browserify-watch', 'open']); | |
gulp.task('build', ['styles', 'vendor', 'browserify']); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment