https://github.com/mathiasbynens/grunt-yui-compressor
A Grunt plugin for compressing JavaScript and CSS files using YUI Compressor.
https://github.com/mathiasbynens/grunt-yui-compressor
Last synced: 2 months ago
JSON representation
A Grunt plugin for compressing JavaScript and CSS files using YUI Compressor.
- Host: GitHub
- URL: https://github.com/mathiasbynens/grunt-yui-compressor
- Owner: mathiasbynens
- License: gpl-2.0
- Created: 2012-06-03T16:04:21.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2015-03-09T11:56:54.000Z (over 10 years ago)
- Last Synced: 2025-04-14T10:06:50.752Z (2 months ago)
- Language: JavaScript
- Homepage: http://git.io/grunt-yui-compressor
- Size: 284 KB
- Stars: 59
- Watchers: 5
- Forks: 13
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE-GPL.txt
Awesome Lists containing this project
README
# grunt-yui-compressor [](https://gemnasium.com/mathiasbynens/grunt-yui-compressor)
A [grunt](https://github.com/cowboy/grunt) plugin for compressing JavaScript and CSS files using YUI Compressor.
## Getting Started
Install the module:
```bash
npm install grunt-yui-compressor
```Then add this line to your project’s `grunt.js` gruntfile:
```js
grunt.loadNpmTasks('grunt-yui-compressor');
```Now you can specify CSS/JS files to minify. Here’s a basic example:
```js
'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](https://github.com/gruntjs/grunt/blob/master/docs/task_min.md#usage-examples).
## Documentation
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](https://github.com/gruntjs/grunt/blob/master/docs/types_of_tasks.md#multi-tasks), meaning that each of them will implicitly iterate over all of its targets if no target is specified.
## FAQ
### 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](https://mathiasbynens.be/notes/javascript-escapes) 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## Contributing
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.
## Author
| [](https://twitter.com/mathias "Follow @mathias on Twitter") |
|---|
| [Mathias Bynens](https://mathiasbynens.be/) |## License
This project is dual licensed under the [MIT](https://mths.be/mit) and [GPL](https://mths.be/gpl) licenses.