0.1.3 • Published 9 years ago

gulp-cjs-tasks v0.1.3

Weekly downloads
1
License
GPLv3
Repository
github
Last release
9 years ago

gulp-cjs-tasks

Create gulp tasks using commonjs conventions

Why?

  • Large gulp files are a pain
  • Ability to create self documenting tasks
  • Commonjs is a fine pattern for creating tasks
  • Built-in sequences, rather than deps

Installation

Create a new npm based project first. If you already have that, you can skip this step.

$ npm init

Install gulp and gulp-cjs-tasks dependencies.

$ npm install --save-dev gulp
$ npm install --save-dev gulp-cjs-tasks

Create a gulpfile.js file and add the following

var gulp = require('gulp');
var taskLoader = require('gulp-cjs-tasks/task-loader');

taskLoader(__dirname + '/tasks', gulp);

Create a ./tasks directory, this is where you tasks will go. If you'd like your tasks in a different directory, make sure you path reference in the gulpfile accordingly.

$ mkdir tasks

Examples

For examples, take a look at the example repository

Commonjs conventions as tasks

Simple

Let's take a simple gulp task that does nothing but console.log something. Consider something like this:

gulp.task('foo', function(done){
    console.log('foo!');
    done();
});

If we dissect the above then we can conclude the following:

  • we have a task name, in our case foo
  • we have a function that will be executed once gulp foo is called
  • we also have a callback function done that is called when the task is done

In this example the name of the task is derived from the filename: foo.js, where the basename is foo, so our task name will be foo.

// ./tasks/foo.js
module.exports = function() {
	return function(done) {
		console.log('foo!');
		done();
	};
};

Since you might have the need to group tasks in single file, you can also export an object, in which each key is a task name, and each value is a task function.

module.exports = {
    bar: function(done) {
        console.log('bar!');
        done();
    }
};

If you'd like to pass the gulp object for each task module, you can export a function rather than an object:

module.exports = function(gulp) {
    return {
        copy: function() {
            return gulp.src('./README.md')
                .pipe(gulp.dest('./README-copy.md'));
        }
    }
};

Or make it more nice and neat by hosting the task function:

module.exports = function(gulp) {
    return {
        nicer: nicer
    };

    function nicer() {
        return gulp.src('./foo')
            .pipe(gulp.dest('./bar'));
    }
};

Let's add a task with a dependent task.

gulp.task('first', function(done){
    console.log('first!');
    done();
});
gulp.task('second', ['first'], function(done){
    console.log('second!');
    done();
});

We can achieve this by specifying a task object containing a task function rather than just a task function.

module.exports = {
	first: first,
	second: {
		fn: second,
		dep: ['first']
	}
};

function first(done) {
	console.log('first!');
	done();
}

function second(done) {
	console.log('second!');
	done();
}

Usage

This library consists of the following modules:

  • task-loader - A gulp task loader which loads all tasks from a given path
  • help - Utility for creating help on the CLI and help documentation

task-loader

var gulp = require('gulp');

var taskLoader = require('gulp-cjs-tasks/task-loader');

taskLoader(__dirname + '/tasks', gulp);

help

var helpUtils = require('gulp-cjs-tasks/help')(gulp);

// Shows help on the console
helpUtils.show();
Usage
  gulp task [ option ... ]

Tasks
  help                              : Show help
  one                               : Task one
  two                               : Task two
  three                             : Task three
  four                              : Task four
  one-then-two                      : Tasks one then two
  one-and-two-then-three            : Tasks one and two then three
  one-and-two                       : Tasks one and two
  one-and-two-then-three-and-four   : Tasks one and two then three and four
0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago