grunt-config

Easy way to define target specific settings.

Usage no npm install needed!

<script type="module">
  import gruntConfig from 'https://cdn.skypack.dev/grunt-config';
</script>

README

grunt-config

Build Status Version Prerequisite License: MIT Commitizen friendly Twitter: outa7iME

Easy way to define target specific settings.

Install

From NPM:

npm install grunt-config --save-dev

Usage

Assuming installation via NPM, you can use grunt-config in your gruntfile like this:

module.exports = function (grunt) {
  grunt.initConfig({
    config: {
      dev: {
        options: {
          variables: {
            'environment': 'development'
          }
        }
      },
      prod: {
        options: {
          variables: {
            'environment': 'production'
          }
        }
      }
    }
  });
  grunt.registerTask('trace', function () {
    grunt.log.writeln('Using environment: ' + grunt.config.get('environment'));
  });
  grunt.loadNpmTasks('grunt-config');
  grunt.registerTask('default', ['config:dev', 'trace']);
};

Options

variables

Type: Object

This option is used to define the variables to be exported in grunt.config object.

options: {
  variables: {
    'foo': 'bar'
  }
}

silent

Type: Boolean Default: false

If set to true, removes the output from stdout.

Examples

Environment variable in source (with grunt-replace)

File build/environment.txt:

@@environment

gruntfile:

config: {
  dev: {
    options: {
      variables: {
        'environment': 'development'
      }
    }
  },
  prod: {
    options: {
      variables: {
        'environment': 'production'
      }
    }
  }
},

replace: {
  dist: {
    options: {
      variables: {
        'environment': '<%= grunt.config.get("environment") %>'
      },
      force: true
    },
    files: [
      {
        expand: true, flatten: true, src: ['build/environment.txt'], dest: 'public/'
      }
    ]
  }
}

// development
grunt.registerTask('dev', ['config:dev', 'replace']);

// production
grunt.registerTask('prod', ['config:prod', 'replace']);

Handlebars environment partials (with assemble)

gruntfile:

config: {
  dev: {
    options: {
      variables: {
        'partials': ['assets/partials/dev/*.hbs']
      }
    }
  },
  dist: {
    options: {
      variables: {
        'partials': ['assets/partials/dist/*.hbs']
      }
    }
  }
},

assemble: {
  dist: {
    options: {
      partials: '<%= grunt.config.get("partials") %>',
      ext: '.html'
    },
    files: [
      {
        expand: true, cwd: 'assets/templates', src: ['**/*.hbs'], dest: 'temp/templates'
      }
    ]
  }
}

// development
grunt.registerTask('dev', ['config:dev', 'assemble']);

// production
grunt.registerTask('prod', ['config:prod', 'assemble']);

Dynamic options (with grunt-contrib-concat)

gruntfile:

config: {
  dev: {
    options: {
      variables: {
        'concatOptions': {
          banner: '(function dev () {',
          footer: '}());'
        }
      }
    }
  },
  prod: {
    options: {
      variables: {
        'concatOptions': {
          banner: '(function prod () {',
          footer: '}());'
        }
      }
    }
  }
},

concat: {
  dist: {
    options: {
      process: function (src, filepath) {
        var concatOptions = grunt.config.get('concatOptions');
        return concatOptions.banner + '\n' + src + concatOptions.footer + '\n';
      }
    },
    files: [
      {
        expand: true, flatten: true, src: ['test/fixtures/concat.txt'], dest: 'temp/'
      }
    ]
  }
}

// development
grunt.registerTask('dev', ['config:dev', 'concat']);

// production
grunt.registerTask('prod', ['config:prod', 'concat']);

Dynamic options using grunt templates (with grunt-contrib-concat)

config: {
  dev: {
    options: {
      variables: {
        'concatOptions': {
          banner: '(function dev () {',
          footer: '}());'
        }
      }
    }
  },
  prod: {
    options: {
      variables: {
        'concatOptions': {
          banner: '(function prod () {',
          footer: '}());'
        }
      }
    }
  }
},

concat: {
  dist: {
    options: {
      banner: '<%= grunt.config.get("concatOptions").banner %>',
      footer: '<%= grunt.config.get("concatOptions").footer %>'
    },
    files: [
      {
        expand: true, flatten: true, src: ['test/fixtures/concat.txt'], dest: 'temp/'
      }
    ]
  }
}

// development
grunt.registerTask('dev', ['config:dev', 'concat']);

// production
grunt.registerTask('prod', ['config:prod', 'concat']);

Prevent stdout on production environment

gruntfile:

config: {
  dev: {
    options: {
      variables: {
        'environment': 'development'
      }
    }
  },
  prod: {
    silent: true,
    options: {
      variables: {
        'environment': 'production'
      }
    }
  }
}

License

MIT © outaTiME