What is load-grunt-tasks?
The load-grunt-tasks npm package is designed to simplify the process of loading multiple grunt tasks into a Gruntfile. It automatically loads all grunt tasks specified in the package.json file, reducing the need for repetitive code and making the Gruntfile cleaner and easier to maintain.
What are load-grunt-tasks's main functionalities?
Automatic Task Loading
This feature allows you to automatically load all grunt tasks specified in your package.json file. By requiring 'load-grunt-tasks' and passing the grunt instance to it, you eliminate the need to manually load each task.
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
// Your configuration here
});
};
Custom Task Pattern
This feature allows you to specify custom patterns for loading tasks. By providing a pattern array, you can control which tasks are loaded, including scoped packages.
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt, { pattern: ['grunt-*', '@*/grunt-*'] });
grunt.initConfig({
// Your configuration here
});
};
Custom Configurations
This feature allows you to customize the configuration file and scope from which tasks are loaded. You can specify a different configuration file and limit the scope to dependencies, devDependencies, or peerDependencies.
module.exports = function(grunt) {
require('load-grunt-ttasks')(grunt, { config: 'package.json', scope: 'devDependencies' });
grunt.initConfig({
// Your configuration here
});
};
Other packages similar to load-grunt-tasks
jit-grunt
jit-grunt is a package that loads grunt tasks just-in-time, meaning it only loads the tasks that are needed for the current grunt task being run. This can improve performance by reducing the initial load time compared to load-grunt-tasks, which loads all tasks upfront.
time-grunt
time-grunt is a package that helps you measure the time taken by each grunt task. While it doesn't load tasks like load-grunt-tasks, it complements it by providing insights into task performance, helping you optimize your build process.
load-grunt-tasks 
Load multiple grunt tasks using globbing patterns
🔥 Want to strengthen your core JavaScript skills and master ES6?
I would personally recommend this awesome ES6 course by Wes Bos.
Usually you would have to load each task one by one, which is unnecessarily cumbersome.
This module will read the dependencies
/devDependencies
/peerDependencies
/optionalDependencies
in your package.json and load grunt tasks that match the provided patterns.
Before
grunt.loadNpmTasks('grunt-shell');
grunt.loadNpmTasks('grunt-sass');
grunt.loadNpmTasks('grunt-recess');
grunt.loadNpmTasks('grunt-sizediff');
grunt.loadNpmTasks('grunt-svgmin');
grunt.loadNpmTasks('grunt-styl');
grunt.loadNpmTasks('grunt-php');
grunt.loadNpmTasks('grunt-eslint');
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-bower-requirejs');
After
require('load-grunt-tasks')(grunt);
Install
$ npm install --save-dev load-grunt-tasks
Usage
module.exports = grunt => {
require('load-grunt-tasks')(grunt);
grunt.initConfig({});
grunt.registerTask('default', []);
};
Examples
Load all grunt tasks
require('load-grunt-tasks')(grunt);
Equivalent to:
require('load-grunt-tasks')(grunt, {pattern: ['grunt-*', '@*/grunt-*']});
Load all grunt-contrib tasks
require('load-grunt-tasks')(grunt, {pattern: 'grunt-contrib-*'});
Load all grunt-contrib tasks and another non-contrib task
require('load-grunt-tasks')(grunt, {pattern: ['grunt-contrib-*', 'grunt-shell']});
Load all grunt-contrib tasks excluding one
You can exclude tasks using the negate !
globbing pattern:
require('load-grunt-tasks')(grunt, {pattern: ['grunt-contrib-*', '!grunt-contrib-coffee']});
Set custom path to package.json
require('load-grunt-tasks')(grunt, {config: '../package'});
Only load from devDependencies
require('load-grunt-tasks')(grunt, {scope: 'devDependencies'});
Only load from devDependencies
and dependencies
require('load-grunt-tasks')(grunt, {scope: ['devDependencies', 'dependencies']});
All options in use
require('load-grunt-tasks')(grunt, {
pattern: 'grunt-contrib-*',
config: '../package.json',
scope: 'devDependencies',
requireResolution: true
});
Options
pattern
Type: string
, Array
Default: ['grunt-*', '@*/grunt-*']
(globbing pattern)
config
Type: string
, Object
Default: Path to nearest package.json
scope
Type: string
, Array
Default: ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies']
Values: 'dependencies'
, 'devDependencies'
, 'peerDependencies'
, 'optionalDependencies'
, 'bundledDependencies'
requireResolution
Type: boolean
Default: false
Traverse up the file hierarchy looking for dependencies like require()
, rather than the default grunt-like behavior of loading tasks only in the immediate node_modules
directory.
License
MIT © Sindre Sorhus