A Grunt plugin for compressing JavaScript and CSS files using YUI Compressor.
JavaScript CSS
Switch branches/tags
Pull request Compare This branch is 2 commits ahead, 13 commits behind mathiasbynens:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


grunt-yui-compressor Dependency status

A grunt plugin for compressing JavaScript and CSS files using YUI Compressor.

Getting Started

Install the module:

npm install grunt-yui-compressor

Then add this line to your project’s grunt.js gruntfile:


Now you can specify CSS/JS files to minify. Here’s a basic example:

'min': {
	'dist': {
		'src': ['src/foo.js', 'src/bar.js'],
		'dest': 'build/foobar.min.js'
'cssmin': {
	'dist': {
		'src': ['css/foo.css', 'css/bar.css'],
		'dest': 'build/foobar.min.css'

Both min and cssmin use the same API as the built-in min task.


This plugin does two things:

  • It overrides grunt’s built-in min task, and makes it use YUI Compressor instead of UglifyJS.
  • It provides a cssmin task that uses YUI Compressor to compress CSS files.

Both these tasks are multi tasks, meaning that each of them will implicitly iterate over all of its targets if no target is specified.


Why not just use grunt’s built-in min task to minify JavaScript?

Grunt’s built-in min task relies on UglifyJS. I love UglifyJS, but it has a few annoying issues and shortcomings:

  • It strips license comments of the form /*! foo */, only preserving the first comment in the concatenated file. This may cause you to violate licenses of open-source libraries that you’re using in your projects.
  • It doesn’t escape non-printable ASCII characters in the output, potentially leading to hard-to-debug issues. Try minifying '\x0b', for example.
  • There’s no way to make UglifyJS not munge a variable name.

YUI Compressor doesn’t have these issues.

Release History

  • v0.1.1: Create the destination path automatically if needed
  • v0.1.0: Initial release


Feel free to fork if you see possible improvements!

In lieu of a formal style guide, take care to maintain the existing coding style. Please lint your code (by simply running grunt) before submitting a patch.


Mathias Bynens


This project is dual licensed under the MIT and GPL licenses.