UNPKG

react-infinite

Version:

A browser-ready efficient scrolling container based on UITableView

103 lines (93 loc) 2.38 kB
var watchify = require('watchify'); var browserify = require('browserify'); var babelify = require('babelify'); var moment = require('moment'); var buffer = require('vinyl-buffer'); var sourcestream = require('vinyl-source-stream'); var sourcemaps = require('gulp-sourcemaps'); var uglify = require('gulp-uglify'); var gulp = require('gulp'); var size = require('gulp-size'); var envify = require('envify/custom'); function transformBundle(root, envObject) { root = root.bundle(); if (envObject.development) { root .pipe(sourcestream('react-infinite.js')) .pipe(buffer()) .pipe(sourcemaps.init()) .pipe(sourcemaps.write('.')) .pipe( size({ title: 'Development bundle' }) ) .pipe(gulp.dest('dist')); } if (envObject.production || envObject.release) { root .pipe(sourcestream('react-infinite.min.js')) .pipe(buffer()) .pipe(uglify()) .pipe( size({ title: 'Release minified bundle' }) ) .pipe(gulp.dest('dist')); } if (envObject.release) { root .pipe(sourcestream('react-infinite.js')) .pipe(buffer()) .pipe( size({ title: 'Release unminified bundle' }) ) .pipe(gulp.dest('dist')); } } module.exports = function(shouldWatch, envObject, files) { var watchFunction = shouldWatch ? watchify : function(x) { return x; }; var watchArgs = shouldWatch ? watchify.args : undefined; return function() { var root = watchFunction( browserify( { entries: files, standalone: 'Infinite' }, watchArgs ) ) .transform(babelify) .transform( envify({ NODE_ENV: envObject.production || envObject.release ? 'production' : 'development' }) ) .exclude('react') .exclude('react-dom') .exclude('prop-types'); if (envObject.production || envObject.release) { root = root.transform('uglifyify'); } if (shouldWatch) { root.on('update', function() { transformBundle(root, envObject); }); root.on('log', function() { console.log('[' + moment().format() + '] Browserify bundle refreshed'); }); } transformBundle(root, envObject); }; };