veezard
Version:
TECHB fork from veeva. Veeva CLM Generator & Workflow for building iRep Presentations.
172 lines (139 loc) • 5.41 kB
JavaScript
;
var browserSync = require('browser-sync'),
concat = require('gulp-concat'),
path = require('path'),
plumber = require('gulp-plumber'),
Q = require('q'),
size = require('gulp-size'),
uglify = require('gulp-uglify'),
utils = require('../lib/utils');
module.exports = function(gulp, options) {
function processJSSingles() {
var deferred = Q.defer();
gulp.src(path.join(options.module.paths.src, options.module.paths.js.standalone, '**', '*.js'))
.pipe(plumber())
.pipe(size({
showFiles: true
}))
.pipe(gulp.dest(path.join(options.module.paths.src, options.module.paths.dest, 'js')))
.on('error', function(err) {
deferred.reject(err);
})
.on('end', function() {
deferred.resolve();
});
return deferred.promise;
}
function processJSMain() {
var deferred = Q.defer();
gulp.src(path.join(options.module.paths.src, options.module.paths.js.scripts, '**', '*.js'))
.pipe(plumber())
.pipe(concat('main.js'))
.pipe(uglify({
mangle: false
}))
.pipe(size({
showFiles: true
}))
.pipe(gulp.dest(path.join(options.module.paths.src, options.module.paths.dest, 'js')))
.on('error', function(err) {
deferred.reject(err);
})
.on('end', function() {
deferred.resolve();
});
return deferred.promise;
}
function processJSVendor() {
var deferred = Q.defer();
gulp.src([
path.join(options.module.paths.src, options.module.paths.js.vendor, '**/*.js'),
path.join('!' + options.module.paths.src, options.module.paths.js.vendor, 'zepto.min.js'),
path.join('!' + options.module.paths.src, options.module.paths.js.vendor, 'zepto.ghostclick.js')
])
.pipe(plumber())
.pipe(concat('vendor.js'))
.pipe(uglify())
.pipe(size({
showFiles: true
}))
.pipe(gulp.dest(path.join(options.module.paths.src, options.module.paths.dest, 'js')))
.on('error', function(err) {
deferred.reject(err);
})
.on('end', function() {
deferred.resolve();
});
return deferred.promise;
}
function processJSVendorBuild() {
var deferred = Q.defer();
gulp.src(path.join(options.module.paths.src, options.module.paths.js.vendor, '**/*.js'))
.pipe(plumber())
.pipe(concat('vendor.js'))
.pipe(uglify({
mangle: true
}))
.pipe(size({
showFiles: true
}))
.pipe(gulp.dest(path.join(options.module.paths.src, options.module.paths.dest, 'js')))
.on('error', function(err) {
deferred.reject(err);
})
.on('end', function() {
deferred.resolve();
});
return deferred.promise;
}
function processCopyScripts() {
var deferred = Q.defer();
gulp.src(path.join(options.module.paths.src, options.module.paths.dest, '**/*.js'))
.pipe(plumber())
.pipe(size({
showFiles: true
}))
.pipe(gulp.dest(path.join(options.paths.dist, 'global')))
.on('error', function(err) {
deferred.reject(err);
})
.on('end', function() {
deferred.resolve();
});
return deferred.promise;
}
gulp.task('veeva-module:js-build', function() {
var deferred = Q.defer();
utils.executeWhen(true, processJSSingles, '⤷ Processing Veeva JS dependencies.')
.then(function() {
return utils.executeWhen(true, processJSMain, '⤷ Main Scripts');
})
.then(function() {
return utils.executeWhen(!options.module.workflow.assemble.data.deploy, processJSVendor, '⤷ Vendor Scripts - Dev Mode');
})
.then(function() {
return utils.executeWhen(options.module.workflow.assemble.data.deploy, processJSVendorBuild, '⤷ Vendor Scripts - Build Mode');
})
.then(function() {
return utils.executeWhen(true, processCopyScripts, '⤷ Copying Veeva JS dependencies to project');
})
.done(function() {
utils.log.success(' Done Processing Veeva JS dependencies.');
deferred.resolve();
},
function(err) {
utils.log.error(err);
deferred.reject(err);
});
return deferred.promise;
});
gulp.task('veeva-module:js-dev', function() {
return gulp.src(path.join(options.module.paths.src, options.module.paths.js.scripts, '**', '*.js'))
.pipe(plumber())
.pipe(concat('main.js'))
.pipe(gulp.dest(path.join(options.paths.dist, 'global', 'js')))
.pipe(browserSync.reload({
stream: true
}));
});
};