Mix Gruntfiles!
Combines tasks from multiple Gruntfiles in sub folders.
Takes tasks Gruntfiles.js from (direct) child folders and combines them into single tasks list!
Installation
npm install gruntfiles-mix
After install if no Gruntfile.js in install directory the default one is created automatically:
/* Default gruntfile-mix Gruntfile.js */moduleexports = addPrefix: true useNamePartAsPrefix: true prefixSeparator: '-';
You can use options to modify the behaviour
addPrefix
Type: Boolean
Default value: false
Adds directory name as prefix to task name.
useNamePartAsPrefix
Type: Boolean
Default value: true
Adds only first symbolic part for directory name as prefix (for directory "front-app" will take "front" as prefix).
prefixSeparator
Type: String
Default value: -
Character(s) that separates prefix from task.
Gruntfiles with tasks
You typical grunt file in sub directories when used in Gruntfiles-mix scenario should modify supplied grunt config object and register needed tasks, but not initialize grunt configuration.
module{ // create your config if none is passed config = config || {} // define project/directory specific tasks grunt // assume that clean tasks may already exist in config configclean = configclean || {} // to avoid problems with paths resolution prefer to use absolute paths in tasks (using ```__dirname```) // while execution of tasks CWD is Gruntfiles-mix dir, NOT __dirname of current Gruntfile. configcleandist = __dirname + '/dist' // register custom task grunt // make possible to use this Gruntfile as usual (if only "grunt" argument is passed) if argumentslength == 1 grunt };
Caution!
Each time grunt.loadNmpTask in certain Gruntfile is executed it loads tasks (grunt module) from respective folder. If different Gruntfiles use the same modules with different versions tasks will be executed using last one loaded.
Tests
For test use command: node test