78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
var gulp = require('gulp');
|
|
var gulpif = require('gulp-if');
|
|
var gutil = require('gulp-util');
|
|
var source = require('vinyl-source-stream');
|
|
var streamify = require('gulp-streamify');
|
|
var sourcemaps = require('gulp-sourcemaps');
|
|
var rename = require('gulp-rename');
|
|
var watchify = require('watchify');
|
|
var browserify = require('browserify');
|
|
var babelify = require('babelify');
|
|
var uglify = require('gulp-uglify');
|
|
var browserSync = require('browser-sync');
|
|
var debowerify = require('debowerify');
|
|
var handleErrors = require('../util/handle-errors');
|
|
var config = require('../config');
|
|
var util = require('gulp-util');
|
|
|
|
// Based on: http://blog.avisi.nl/2014/04/25/how-to-keep-a-fast-build-with-browserify-and-reactjs/
|
|
function buildScript(file, watch) {
|
|
|
|
var bundler = browserify({
|
|
entries: [config.sourceDir + file],
|
|
debug: !global.isProd,
|
|
insertGlobalVars: {
|
|
isProd: function () {
|
|
return (global.isProd) ? "'enabled'" : "'disabled'";
|
|
},
|
|
noFixtures: function() {
|
|
return (util.env['api']) ? "'enabled'" : "'disabled'";
|
|
}
|
|
},
|
|
cache: {},
|
|
packageCache: {},
|
|
fullPaths: false
|
|
});
|
|
|
|
if ( watch ) {
|
|
bundler = watchify(bundler);
|
|
bundler.on('update', rebundle);
|
|
}
|
|
|
|
bundler.transform(babelify, {'optional': ['es7.classProperties']});
|
|
bundler.transform(debowerify);
|
|
|
|
function rebundle() {
|
|
var stream = bundler.bundle();
|
|
|
|
gutil.log('Rebundle...');
|
|
|
|
return stream.on('error', handleErrors)
|
|
.pipe(source(file))
|
|
.pipe(gulpif(global.isProd, streamify(uglify())))
|
|
.pipe(streamify(rename({
|
|
basename: 'main'
|
|
})))
|
|
.pipe(gulpif(!global.isProd, sourcemaps.write('./')))
|
|
.pipe(gulp.dest(config.scripts.dest))
|
|
.pipe(gulpif(browserSync.active, browserSync.reload({ stream: true, once: true })));
|
|
}
|
|
|
|
return rebundle();
|
|
|
|
}
|
|
|
|
gulp.task('browserify', function() {
|
|
|
|
// Only run watchify if NOT production
|
|
return buildScript('index.js', !global.isProd);
|
|
|
|
});
|
|
|
|
gulp.task('config', function() {
|
|
|
|
return gulp.src(config.sourceDir + 'config.js')
|
|
.pipe(gulp.dest(config.scripts.dest))
|
|
}); |