grunt-config-dir-merge
v0.3.3
Published
Split a grunt configuration into multiple files
Downloads
4
Readme
Note:
This repo/branch is a fork of the original, pending acceptance of a pull request.
Grunt: Config Directory
Split a grunt configuration into multiple files
Getting Started
This plugin requires Grunt ~0.4.1
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. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-config-dir --save-dev
Overview
Somewhere in your project's Gruntfile, initialize grunt-config-dir
like this:
require('grunt-config-dir')(grunt, {
configDir: require('path').resolve('grunt'),
fileExtensions: ['js', 'coffee']
}, function(err){ grunt.log.error(err) });
Then create your configDir
and move as many properties as you wish from grunt.config
into files beneath it. Filenames with truncated
extensions are used as the property keys. Your property files should export a function expecting the grunt
object as a parameter,
which returns the property value.
Options
options.configDir
Type: String
Default value: path.resolve('grunt')
A directory relative to the Gruntfile
to contain your grunt.config property files.
options.fileExtensions
Type: Array
Default value: ['js', 'coffee']
Valid file extensions to import properties from within configDir
.
options.mergeConfig
Type: Boolean
Default value: true
If multiple configurations are found for the same task, they will be merged by default. If set to false, new task configurations will override previous ones.
Usage Example
Gruntfile.js
require('grunt-config-dir')(grunt);
grunt.initConfig({
// copy config has been moved to `grunt/copy.js`
/*
copy: {
main: {
files: [
{ expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile' }
]
}
}
*/
});
// grunt.loadNpmTasks('grunt-contrib-copy');
grunt/copy.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-copy');
return {
main: {
files: [
{ expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile' }
]
}
};
};
Comparison with alternatives
Before choosing grunt-config-dir
, you may want to explore other libraries with the same goal.
| Feature | grunt-config-dir | load-grunt-config |
|:---|:---:|:---:|
| Configurable tasks directory | :heavy_check_mark: | :heavy_check_mark: |
| Default tasks directory | grunt/
| grunt/
|
| CoffeeScript | :heavy_check_mark: | :heavy_check_mark: |
| Tests | :heavy_check_mark: | :heavy_check_mark: |
| Dogfooding | :heavy_check_mark: | :heavy_check_mark: |
| Compatibility with grunt-environment | :heavy_check_mark: | :question: |
| Support for returning a function | :x: | :heavy_check_mark: |
| Aliases file | :x: | :heavy_check_mark: |
| YAML support | :x: | :heavy_check_mark: |
Contributing
- Fork the repository on Github
- Fetch a local clone
- Install the dependencies:
$ npm install
- Run the test suite:
$ grunt
- Make your changes, and then open a pull request
Thanks!
Release History
0.3.1
- Converts source to CoffeeScript
- Uses grunt/ directory in own source to provide usage example and test target
- Adds nodeunit tests
- Adds linting to test chain
- Enforces dependency on
fs-walk
0.3.0
- Cleaner verbose logging
- Fixed an issue with joining multiple file extensions
- More comprehensive return object
0.2.0
- Fixes entry point
- Deprecates
verbose
option in favor of grunt.verbose
0.1.0
- First release