Skip to content

Commit

Permalink
fix less task overwriting grunt.config.data object
Browse files Browse the repository at this point in the history
Commit 0729eeb changed one call to
_.merge so it would overwrite the grunt.config.data object. This reverts
this one line accordingly.

Problem
=======

    metadata = _.merge({}, grunt.config.data, metadata,
                       grunt.task.current.data.options);

_.merge (see [0](http://lodash.com/docs#merge)) overwrites the
first argument, since this is used as the destination. Using just
a clean object as destination, _.merge will also return the destination
object and store this result into metadata.

Overwriting grunt.config.data is a big problem if the `less` task is
used in combination with other tasks like `compress` from the
grunt-contrib-compress library. There is a `compress` option for
assemble-less, that will be available in
`grunt.task.current.data.options`. Merging this into grunt.config.data
will then overwrite the configuration of the compress task (with `true`
in this case). Leading to a very strange error message from grunt, since
some kind of object is expected there.
  • Loading branch information
johnyb committed Mar 26, 2014
1 parent d4ef403 commit 98dccd3
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion tasks/less.js
Expand Up @@ -224,7 +224,7 @@ module.exports = function(grunt) {
// Read in metadata to pass to templates as context.
var metadata = utils.readOptionsData(options.metadata, {namespace: true});

metadata = _.merge(grunt.config.data, metadata, grunt.task.current.data.options);
metadata = _.merge({}, grunt.config.data, metadata, grunt.task.current.data.options);
metadata = grunt.config.process(metadata);

if (options.process === true) {options.process = {};}
Expand Down

0 comments on commit 98dccd3

Please sign in to comment.