Giter Site home page Giter Site logo

grunt-config-dir's Introduction

Grunt: Config Directory

Split a grunt configuration into multiple files

Build Status Strider Status status Dependency Status devDependency Status Gittip

NPM

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.

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 ✔️ ✔️
Default tasks directory grunt/ grunt/
CoffeeScript ✔️ ✔️
Tests ✔️ ✔️
Dogfooding ✔️ ✔️
Compatibility with grunt-environment ✔️
Support for returning a function ✔️
Aliases file ✔️
YAML support ✔️

Contributing

  1. Fork the repository on Github
  2. Fetch a local clone
  3. Install the dependencies: $ npm install
  4. Run the test suite: $ grunt
  5. 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

Bitdeli Badge

xrefs funcs library users authors Total views Views in the last 24 hours

grunt-config-dir's People

Contributors

logankoester avatar bitdeli-chef avatar mikemliu avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.