assemble / assemble-less

Grunt task for compiling LESS to CSS. This task does for less what Assemble does for HTML, making it much easier to modularize and reduce repetition in stylesheets.
http://github.com/assemble/assemble/
MIT License
66 stars 20 forks source link

fix less task overwriting grunt.config.data object #27

Closed johnyb closed 10 years ago

johnyb commented 10 years ago

Commit 0729eeb5dd874233f93a9a613c9f7ebe18cea684 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 lodash documentation) 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.

jonschlinkert commented 10 years ago

good catch! thanks!

jonschlinkert commented 10 years ago

merging despite the failed Travis CI build, I don't think it's related.

johnyb commented 10 years ago

Yes, this test has been failing before :/ but I was unsure how to fix it.

jonschlinkert commented 10 years ago

no prob, I'll get it fixed, I think it's a less.js issue. thanks again!