gulp-task-loader
v1.5.0
Published
Load gulp tasks from folder
Downloads
2,578
Readme
Gulp Task Loader
Organize your gulp-tasks in separate files
Not actively maintained
Because I rarely use gulp these days. Wanna take over? Tell me.
Install
npm install gulp-task-loader --save-dev
Use
- Create one file / task
- Place the task-files in a folder named 'gulp-tasks' (or whatever you like)
- Require this module and invoke it [with or without options]
- Gulp-tasks now magically exist (named after task file name)
You may create subfolders of tasks as well. Tasks in these folders will have their task name prefixed by the folder name. For example, if you have a task named coffee
that compiles CoffeeScript files, you could place this task in the gulp-tasks/browser
folder and it would be invoked using gulp browser:coffee
. You may nest folders as deep as required, and each folder will be added to the task name.
Examples
Simple task file
// gulp-tasks/copy.js
module.exports = function() {
return gulp.src("src/**/*")
.pipe(gulp.dest("dist/**/*"));
};
// gulpfile.js
// Load all tasks from folder `gulp-tasks`
require('gulp-task-loader')();
// use it!
gulp.watch(someFiles, ['copy']);
With dependencies
// gulp-tasks/task-with-deps.js
module.exports = function() {
return gulp.src("src/**/*")
.pipe(gulp.dest("dist/**/*"));
};
module.exports.dependencies = ['copy'];
Load tasks from another folder
require('gulp-task-loader')('le-tasks-de-gulp');
Load tasks in CoffeeScript
require('coffee-script/register');
require('gulp-task-loader')({ exts: ['.coffee'] });
Load tasks in other extensions
require('gulp-task-loader')({ exts: ['.jscript'] });
Task context
Each task is called with a context object containing a reference to gulp
and opts
(the options object).
// gulpfile.js
var pkg = require('./package.json');
require('gulp-task-loader')({ pkg: pkg, dest: 'dist' });
// gulp-tasks/xxx.js
module.exports = function() {
return this.gulp.src(this.opts.pkg.main)
.pipe(this.gulp.dest(this.opts.dest));
};
Subtasks
// gulp-tasks/copy/all.js
// gulp-tasks/copy/fonts.js
// gulpfile.js
gulp.watch(allFiles, ['copy:all']);
gulp.watch(someFiles, ['copy:fonts']);
Given the files in folder copy - two tasks have been created. copy:all
& copy:fonts
Options
dir
Type String
Default gulp-tasks
Path to folder with gulp tasks
extensions
Type Array
Default to keys of require.extensions
List of extensions to filter tasks by. Example: ['.js', '.coffee']
Test
npm test
Changelog
1.4.4
- Bugfix for options.dir
1.4.1
- Fixed bug that caused subtasks to break
1.4.0
- Allow loading of infinitely nested children directories
1.3.0
- Replaced lodash.defaults with object-assign
- Call tasks with context. Thanks to @mamboer
1.2.1
- Load tasks relative to project. Thanks to @archr
1.2.0
- tasks in subfolder will be named
folderName:taskName
. Thanks to @evanshortiss.
1.1.0
- added support for other sources than .js. Thanks to @blvz.
pre 1.1.0
- the dark ages of not documenting version bumps..