UNPKG

taskerify

Version:

A task-builder based on Laravel-Elixir.

69 lines (52 loc) 2.47 kB
'use strict'; var gulp = require('gulp'); var gutil = require('gulp-util'); var watchify = require('watchify'); var buffer = require('vinyl-buffer'); var Taskerify = require('./../index'); var browserify = require('browserify'); var source = require('vinyl-source-stream'); var bundle; var $ = Taskerify.Plugins; var config = Taskerify.config; Taskerify.extend('browserify', function (src, output, baseDir, options) { var paths = prepGulpPaths(src, baseDir, output); new Taskerify.Task('browserify', function () { var stream = config.js.browserify.watchify.enabled ? watchifyStream : browserifyStream; bundle = function (stream, paths) { this.log(paths.src, paths.output); return stream.bundle().on('error', function (e) { new Taskerify.Notification().error(e, 'Browserify Failed!'); this.emit('end'); }).pipe(source(paths.output.name)).pipe(buffer()).pipe($.if(config.sourcemaps, $.sourcemaps.init({ loadMaps: true }))).pipe($.if(config.production, $.uglify())).pipe($.if(config.sourcemaps, $.sourcemaps.write('.'))).pipe(gulp.dest(paths.output.baseDir)).pipe(new Taskerify.Notification('Browserify Compiled!')); }.bind(this); return bundle(stream({ paths: paths, options: options || config.js.browserify.options }), paths); }).watch(); }); var prepGulpPaths = function prepGulpPaths(src, baseDir, output) { return new Taskerify.GulpPaths().src(src, baseDir || config.get('src.js.folder')).output(output || config.get('dist.js.outputFolder'), 'bundle.js'); }; var browserifyStream = function browserifyStream(data) { var stream = browserify(data.paths.src.path, data.options); config.js.browserify.transformers.forEach(function (transformer) { stream.transform(require(transformer.name), transformer.options || {}); }); config.js.browserify.plugins.forEach(function (plugin) { stream.plugin(require(plugin.name), plugin.options || {}); }); config.js.browserify.externals.forEach(function (external) { stream.external(external); }); return stream; }; var watchifyStream = function watchifyStream(data) { var browserify = watchify(browserifyStream(data), config.js.browserify.watchify.options); browserify.on('log', gutil.log); browserify.on('update', function () { bundle(browserify, data.paths); }); return browserify; };