taskerify
Version:
A task-builder based on Laravel-Elixir.
46 lines (34 loc) • 1.86 kB
JavaScript
;
var gulp = require('gulp');
var Taskerify = require('./../index');
var $ = Taskerify.Plugins;
var config = Taskerify.config;
Taskerify.extend('scripts', function (scripts, output, baseDir) {
var paths = prepGulpPaths(scripts, baseDir, output);
new Taskerify.Task('scripts', function () {
return gulpTask.call(this, paths);
}).watch(paths.src.path).ignore(paths.output.path);
});
Taskerify.extend('scriptsIn', function (baseDir, output) {
var paths = prepGulpPaths('**/*.js', baseDir, output);
new Taskerify.Task('scriptsIn', function () {
return gulpTask.call(this, paths);
}).watch(paths.src.path).ignore(paths.output.path);
});
Taskerify.extend('babel', function (scripts, output, baseDir, options) {
var paths = prepGulpPaths(scripts, baseDir, output);
new Taskerify.Task('babel', function () {
var babelOptions = options || config.js.babel.options;
return gulpTask.call(this, paths, babelOptions);
}).watch(paths.src.path).ignore(paths.output.path);
});
var gulpTask = function gulpTask(paths, babel) {
this.log(paths.src, paths.output);
return gulp.src(paths.src.path).pipe($.if(config.sourcemaps, $.sourcemaps.init())).pipe($.concat(paths.output.name)).pipe($.if(babel, $.babel(babel))).on('error', function (e) {
new Taskerify.Notification().error(e, 'Babel Compilation Failed!');
this.emit('end');
}).pipe($.if(config.production, $.uglify(config.js.uglify.options))).pipe($.if(config.sourcemaps, $.sourcemaps.write('.'))).pipe(gulp.dest(paths.output.baseDir)).pipe(new Taskerify.Notification('Scripts Merged!'));
};
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'), 'all.js');
};