# Gulp Tasks folder This folder contains one file for each task (or group of related tasks) for the project's gulpfile. The dependencies between the tasks is kept in the gulpfile. ## Task File Structure Each task is defined by a factory function that accepts `gulp` as a parameter. Each file exports either one factory or an object of factories. E.g. The `build.js` file contains only one task: ```js module.exports = (gulp) => (done) => { ... }; ``` E.g. The `format.js` file contains two tasks: ```js module.exports = { // Check source code for formatting errors (clang-format) enforce: (gulp) => () => { ... }, // Format the source code with clang-format (see .clang-format) format: (gulp) => () => { ... } }; ``` ## Loading Tasks The tasks are loaded in the gulp file, by requiring them. There is a helper called `loadTask(fileName, taskName)` will do this for us, where the `taskName` is optional if the file only exports one task. E.g. Loading the task that will run the build, from a task file that contains only one task. ```js gulp.task('build.sh', loadTask('build')); ``` E.g. Loading the task that will enforce formatting, from a task file that contains more than one task: ```js gulp.task('format:enforce', loadTask('format', 'enforce')); ``` E.g. Loading a task that has dependencies: ```js gulp.task('lint', ['format:enforce', 'tools:build'], loadTask('lint')); ```