Skip to content

Instantly share code, notes, and snippets.

Created September 11, 2014 15:33
Show Gist options
  • Save anonymous/add8716f2b9681a5bee4 to your computer and use it in GitHub Desktop.
Save anonymous/add8716f2b9681a5bee4 to your computer and use it in GitHub Desktop.
'use strict';
var env = require('../env'),
gulp = require('gulp'),
streamify = require('gulp-streamify'),
imagemin = require('gulp-imagemin'),
browserify = require('browserify'),
watchify = require('watchify'),
reactify = require('reactify'),
envify = require('envify'),
uglify = require('uglifyify'),
source = require('vinyl-source-stream'),
stylus = require('gulp-stylus'),
production = (env.NODE_ENV === 'production'),
images, scripts, styles;
images = function () {
return gulp.src('../assets/images/**/*')
.pipe(streamify(imagemin()))
.pipe(gulp.dest('../public/assets/'));
};
scripts = function (watch) {
var bundler, rebundle;
bundler = browserify({
debug: !production,
entries: ['../assets/scripts/views/index.jsx']
});
if (watch) {
bundler = watchify(bundler, {
cache: {},
packageCache: {},
fullPaths: true
});
}
bundler.require('react');
bundler.transform(reactify);
bundler.transform({ global: true }, envify);
if (production) {
bundler.transform({ global: true }, uglify);
}
rebundle = function () {
var stream = bundler.bundle().pipe(source('application.js'));
if (production) {
stream.pipe(streamify(uglify()));
}
return stream.pipe(gulp.dest('../public/assets/'));
};
bundler.on('update', rebundle);
return rebundle();
};
styles = function () {
var build = gulp.src('../assets/styles/**/*.styl').pipe(stylus());
return build.pipe(gulp.dest('../public/assets/'));
};
gulp.task('styles', function () {
return styles();
});
gulp.task('scripts', function () {
return scripts(false);
});
gulp.task('images', function () {
return images();
});
gulp.task('default', ['scripts', 'styles', 'images']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment