Comparing version 0.11.1 to 0.11.2
@@ -42,2 +42,5 @@ 'use strict'; | ||
* | ||
* Dependencies may also be specified as a glob pattern. Be aware that | ||
* the order cannot be guarenteed when using a glob pattern. | ||
* | ||
* ```js | ||
@@ -44,0 +47,0 @@ * // register task "site" with composer |
'use strict'; | ||
var utils = require('./utils'); | ||
/** | ||
@@ -9,24 +11,44 @@ * Resolve the arguments by looking up tasks and their dependencies. | ||
* // bind the composer to the resolve call | ||
* var tasks = resolve.call(this, args); | ||
* var tasks = resolve.call(this, arr); | ||
* ``` | ||
* | ||
* @param {Array} `args` flattened array of strings and functions to resolve. | ||
* @param {Array} `arr` flattened array of strings and functions to resolve. | ||
* @return {Array} Return array of composed functions to run. | ||
*/ | ||
module.exports = function(args) { | ||
var len = args.length, i = 0; | ||
var fns = new Array(len); | ||
module.exports = function(arr) { | ||
var len = arr.length, i = 0; | ||
var fns = []; | ||
while (len--) { | ||
var fn = args[i]; | ||
if (typeof fn === 'string') { | ||
var task = this.tasks[fn]; | ||
if (!task) { | ||
throw new Error('Invalid task `' + fn + '`. Register `' + fn + '` before building.'); | ||
var str = arr[i++]; | ||
if (isGlob(str)) { | ||
var obj = utils.mm.matchKeys(this.tasks, str); | ||
var keys = Object.keys(obj); | ||
if (!keys.length) { | ||
throw new Error('glob pattern "' + str + '" did not match any tasks'); | ||
} | ||
fn = task.run.bind(task); | ||
for (var j = 0; j < keys.length; j++) { | ||
fns.push(getTaskFn(this.tasks, keys[j])); | ||
} | ||
continue; | ||
} | ||
fns[i++] = fn; | ||
if (typeof str === 'string') { | ||
str = getTaskFn(this.tasks, str); | ||
} | ||
fns.push(str); | ||
} | ||
return fns; | ||
}; | ||
var re = /\[anonymous \(\d*\)\]/; | ||
function isGlob(str) { | ||
return utils.isGlob(str) && (!re.test(str)); | ||
} | ||
function getTaskFn(tasks, key) { | ||
var task = tasks[key]; | ||
if (!task) { | ||
throw new Error('task "' + key + '" is not registered'); | ||
} | ||
return task.run.bind(task); | ||
} |
@@ -30,3 +30,5 @@ 'use strict'; | ||
require('nanoseconds', 'nano'); | ||
require('micromatch', 'mm'); | ||
require('isobject'); | ||
require('is-glob'); | ||
require('bach'); | ||
@@ -33,0 +35,0 @@ |
{ | ||
"name": "composer", | ||
"description": "API-first task runner with three methods: task, run and watch.", | ||
"version": "0.11.1", | ||
"version": "0.11.2", | ||
"homepage": "https://github.com/doowb/composer", | ||
@@ -32,4 +32,6 @@ "author": "Jon Schlinkert (https://github.com/jonschlinkert)", | ||
"define-property": "^0.2.5", | ||
"is-glob": "^2.0.1", | ||
"isobject": "^2.0.0", | ||
"lazy-cache": "^1.0.3", | ||
"micromatch": "^2.3.7", | ||
"nanoseconds": "^0.1.0" | ||
@@ -36,0 +38,0 @@ }, |
@@ -23,6 +23,9 @@ # composer [![NPM version](https://img.shields.io/npm/v/composer.svg)](https://www.npmjs.com/package/composer) [![Build Status](https://img.shields.io/travis/doowb/composer.svg)](https://travis-ci.org/doowb/composer) | ||
### [.task](index.js#L62) | ||
### [.task](index.js#L65) | ||
Register a new task with it's options and dependencies. To return the task object of an already registered task, pass the name of the task without any additional parameters. | ||
Dependencies may also be specified as a glob pattern. Be aware that | ||
the order cannot be guarenteed when using a glob pattern. | ||
**Params** | ||
@@ -51,3 +54,3 @@ | ||
### [.build](index.js#L118) | ||
### [.build](index.js#L121) | ||
@@ -70,3 +73,3 @@ Build a task or array of tasks. | ||
### [.series](index.js#L178) | ||
### [.series](index.js#L181) | ||
@@ -102,3 +105,3 @@ Compose task or list of tasks into a single function that runs the tasks in series. | ||
### [.parallel](index.js#L210) | ||
### [.parallel](index.js#L213) | ||
@@ -257,6 +260,6 @@ Compose task or list of tasks into a single function that runs the tasks in parallel. | ||
Copyright © 2016 [Jon Schlinkert](https://github.com/jonschlinkert) | ||
Released under the MIT license. | ||
Released under the [MIT license](https://github.com/doowb/composer/blob/master/LICENSE). | ||
*** | ||
_This file was generated by [verb](https://github.com/verbose/verb) on January 29, 2016._ | ||
_This file was generated by [verb](https://github.com/verbose/verb), v0.1.0, on February 12, 2016._ |
27008
531
260
9
+ Addedis-glob@^2.0.1
+ Addedmicromatch@^2.3.7
+ Addedarr-diff@2.0.0(transitive)
+ Addedarr-flatten@1.1.0(transitive)
+ Addedbraces@1.8.5(transitive)
+ Addedexpand-brackets@0.1.5(transitive)
+ Addedexpand-range@1.8.2(transitive)
+ Addedextglob@0.3.2(transitive)
+ Addedfilename-regex@2.0.1(transitive)
+ Addedfill-range@2.2.4(transitive)
+ Addedfor-in@1.0.2(transitive)
+ Addedfor-own@0.1.5(transitive)
+ Addedglob-base@0.3.0(transitive)
+ Addedglob-parent@2.0.0(transitive)
+ Addedis-buffer@1.1.6(transitive)
+ Addedis-dotfile@1.0.3(transitive)
+ Addedis-equal-shallow@0.1.3(transitive)
+ Addedis-extendable@0.1.1(transitive)
+ Addedis-extglob@1.0.0(transitive)
+ Addedis-glob@2.0.1(transitive)
+ Addedis-number@2.1.04.0.0(transitive)
+ Addedis-posix-bracket@0.1.1(transitive)
+ Addedis-primitive@2.0.0(transitive)
+ Addedkind-of@3.2.26.0.3(transitive)
+ Addedmath-random@1.0.4(transitive)
+ Addedmicromatch@2.3.11(transitive)
+ Addednormalize-path@2.1.1(transitive)
+ Addedobject.omit@2.0.1(transitive)
+ Addedparse-glob@3.0.4(transitive)
+ Addedpreserve@0.2.0(transitive)
+ Addedrandomatic@3.1.1(transitive)
+ Addedregex-cache@0.4.4(transitive)
+ Addedremove-trailing-separator@1.1.0(transitive)
+ Addedrepeat-element@1.1.4(transitive)
+ Addedrepeat-string@1.6.1(transitive)