UNPKG

adfab-gulp-boilerplate

Version:

Adfab's boilerplate. Helps you kick-start a front-end project within minutes.

86 lines (77 loc) 2.74 kB
const config = require('./gulp-config.json'); const runSequence = require('run-sequence'); const gulp = require('gulp'); const del = require('del'); const browserSync = require('browser-sync'); const watch = require('gulp-watch'); const util = require('gulp-util'); var fs = require('fs'); var cleanFolderList = []; var buildTaskList = []; var watchTaskList = []; util.env.boilerplate = { config }; for(var taskName in config.tasks) { if (config.tasks.hasOwnProperty(taskName)) { var task = config.tasks[taskName]; var relatedTask = task.hasOwnProperty('task') ? task.task : taskName; if(fs.existsSync('./gulp-tasks/' + relatedTask + '.js')) { gulp.task(taskName, require('./gulp-tasks/' + relatedTask)); } else { gulp.task(taskName, function(taskName, relatedTask) { var taskExport = require('./node_modules/adfab-gulp-boilerplate/tasks/' + relatedTask); return function() { taskExport(taskName); } }(taskName, relatedTask)); } if(!task.hasOwnProperty('build') || task.build) { buildTaskList.push(taskName); } if(task.hasOwnProperty('destination') && (!task.hasOwnProperty('clean') || task.clean)) { cleanFolderList.push(config.tasks[taskName].destination); } if(task.hasOwnProperty('watch')) { watchTaskList.push({'task': taskName, 'fileList': task.watch }); } else if(task.hasOwnProperty('source')) { // 'scripts' task is bundled with babel, watch is managed in 'scripts' task if(taskName !== 'scripts') { watchTaskList.push({'task': taskName, 'fileList': task.source }); } } } } /** * Clean build directory */ gulp.task('clean', function() { return del(cleanFolderList, { cwd: config.destinationRoot }); }); /** * Build app from sources */ gulp.task('build', ['clean'], function() { return runSequence(buildTaskList); }); //BrowserSync gulp.task('browser-sync', function() { browserSync.init({ proxy: config.vhost }); }); /** * Watch task for development */ gulp.task('watch', ['build'], function() { for(var index in watchTaskList) { var watchTask = watchTaskList[index]; watch(watchTask.fileList, { cwd: config.sourceRoot }, function(task) { return function() { return runSequence([task]); }; }(watchTask.task)); } }); gulp.task('serve', ['watch', 'browser-sync']); gulp.task('default', ['build'], function () { });