adgile
Version:
An easy-to-use automated front-end setup.
64 lines (52 loc) • 1.59 kB
JavaScript
/**
* A submodule for running the `adg build` task,
* responsible for setting up the gulp watch server
* @module task.server
*/
const settings = require('../settings.default'),
helpers = require('../helpers/index'),
chalk = require('chalk'),
gulp = require('gulp');
/**
*
* @param {cb} callback
*/
function runTask(cb) {
helpers.verbose(chalk.grey('Running task "server"'));
console.log(chalk.grey('Watching files...'));
gulp.watch(
[settings.assetsFolder + '/sass/**/*.{scss, sass, css}', '!' + settings.assetsFolder + '/sass/*ie.{scss, sass, css}'],
gulp.series('sass')
).on('change', debounce(helpers.watchHandler, 200));
gulp.watch(
[settings.assetsFolder + '/js/**/view-*.js'],
gulp.series('scripts:view', 'templates')
).on('change', debounce(helpers.watchHandler, 200));
gulp.watch(
[settings.assetsFolder + '/js/**/*.js', '!**/view-*.js'],
gulp.series('scripts', 'templates')
).on('change', debounce(helpers.watchHandler, 200));
gulp.watch(
[settings.assetsFolder + '/images/**/*'],
gulp.series('images')
).on('change', debounce(helpers.watchHandler, 200));
gulp.watch(
['templates/**/*'],
gulp.series('templates')
).on('change', debounce(helpers.watchHandler, 200));
cb(null);
}
function debounce(func, delay) {
let debounceTimer
return function() {
const context = this
const args = arguments
clearTimeout(debounceTimer)
debounceTimer
= setTimeout(() => func.apply(context, args), delay)
}
}
module.exports = {
runTask
}