Easy way to define target specific settings.
From NPM:
npm install grunt-config --save-dev
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']);
};
Type: Object
This option is used to define the variables to be exported in grunt.config object.
options: {
variables: {
'foo': 'bar'
}
}
Type: Boolean
Default: false
If set to true
, removes the output from stdout.
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']);
gruntfile:
config: {
dev: {
options: {
variables: {
'environment': 'development'
}
}
},
prod: {
silent: true,
options: {
variables: {
'environment': 'production'
}
}
}
}
MIT © outaTiME