New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

grunt-multitasker

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

grunt-multitasker

functions to help manipulate grunt tasks

  • 0.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

grunt-multitasker

Helper functions for manipulating grunt tasks

Grunt tasks are very versatile, but there are a few things missing.

  • The ability to add a multitask with various aliases for targets
  • The ability to set a default target for a multitask

Getting started

This helper requires Grunt ~0.4.5 If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins.

To install the helper for use in your gruntfile, use this command:

npm install grunt-multitasker --save-dev

To instantiate the helper inside your gruntfile, simpy use:

var multitasker = require('grunt-multitasker')(grunt);

if you'd like the functions to be added to the grunt and grunt.task objects as well, pass true as an additional argument when instantiating the helper, eg

require('grunt-multitasker')(grunt, true);

The helper has several functions to aid in simplifying building tasks

##Note If you use the load-grunt-tasks module, take care to exclude grunt-multitasker from its globbing patterns. By default it will load tasks for any module matching grunt-*, which causes a warning in the grunt output. The registered tasks should still work however

Creating a simple multitask

A standard grunt task can be registered with an alias, which is simply an array of other tasks to execute, like so:

grunt.registerTask('myTask', ['otherTask1', 'otherTask2']);

Unfortunately, if you want to have several variations on this, you need to either register several tasks, or you need to create a task with a function that listens to a psuedotarget parameter. The first solution is fine (and in fact, ideal) when the chains of tasks aren't related. But when they're related or very similar, it makes sense to group them. Unfortunately writing them in a function is clunky, like so:

grunt.registerTask('myTask', function(target) {
  if (target === 'target1'){
    grunt.task.run(['otherTask1, otherTask2, otherTask3']);
  }
  else if (target === 'target2') {
    grunt.task.run(['otherTask1, otherTask3']);
  }
  else if (target === 'target3') {
    grunt.task.run(['myTask:target2', 'otherTask4']);
  }
  //etc...
});

The multitask makes it easy to group aliases together like targets in a real multitask, by generating the internal function for you. you can create a multitask easily like this:

multitasker.registerMultiAliasTask('myTask', {
  target1: ['otherTask1, otherTask2, otherTask3'],
  target2: ['otherTask1, otherTask3'],
  target3: ['myTask:target2', 'otherTask4']
});

You can also specify a default target in two ways. You can either give it it's own alias

default: ['otherTask1', 'otherTask2']

or you can give it the name of one of the other targets

default: 'target3'
Setting a default target for a multitask

Multitasks allow you to run a specific target configuration, but when you don't specify one, they run all of their target configurations, in the order they were declared. This is often useful, but sometimes certain targets can be dangerous to run by accident, so being able to specify a default target would be nice. The helper can do this for you by renaming the task, and reexposing it with a wrapper of the same name that defaults the target for you.

for example, if your copy task had 4 targets declared

grunt.initConfig({
  copy: {
    t1: {...},
    t2: {...},
    t3: {...},
    t4: {...}
  }
});

if you ran grunt copy, the effect would be the same as if you had ran grunt copy:t1; grunt copy:t2; grunt copy:t3; grunt copy:t4. If you want to have a specific set of targets (or a single target) run instead, you'd have to write another task that aliases the targets. The helper makes this simple

// default to just task t2
multitasker.setDefaultTargets('copy', 't2');

// default to tasks 1 and 3
multitasker.setDefaultTargets('copy', ['t1', 't3']);

When renaming the original task, the name will be appended with -base, eg copy-base. An optional third argument lets you specify what the task should be renamed to

multitasker.setDefaultTargets('copy', 't2', 'theTaskFormerlyKnownAsCopy');

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

(Nothing yet)

Keywords

FAQs

Package last updated on 29 Sep 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc