Giter Site home page Giter Site logo

gulp-task-loader's Introduction

Gulp Task Loader

Organize your gulp-tasks in separate files

Dependency Status DevDependency Status PeerDependency Status Build Status

Install

npm install gulp-task-loader --save-dev

Use

  1. Create one file / task
  2. Place the task-files in a folder named 'gulp-tasks' (or whatever you like)
  3. Require this module and invoke it [with or without options]
  4. 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.2

  • Bugfix fro 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..

gulp-task-loader's People

Contributors

hontas avatar mamboer avatar evanshortiss avatar salimkayabasi avatar tjsail33 avatar alexbeauchemin avatar archr avatar blvz avatar

Watchers

Zen Li avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.