Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save andrelashley/c10a16da1831c04b7ff2272ee5d587bb to your computer and use it in GitHub Desktop.
Save andrelashley/c10a16da1831c04b7ff2272ee5d587bb to your computer and use it in GitHub Desktop.
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