ruby-clean-css 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/.gitmodules +3 -0
  2. data/EXAMPLE.md +25 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +30 -0
  5. data/LICENSE +19 -0
  6. data/README.md +106 -0
  7. data/lib/javascript/clean-css/.gitignore +4 -0
  8. data/lib/javascript/clean-css/.jshintignore +3 -0
  9. data/lib/javascript/clean-css/.jshintrc +14 -0
  10. data/lib/javascript/clean-css/.travis.yml +11 -0
  11. data/lib/javascript/clean-css/History.md +556 -0
  12. data/lib/javascript/clean-css/LICENSE +19 -0
  13. data/lib/javascript/clean-css/README.md +218 -0
  14. data/lib/javascript/clean-css/bin/cleancss +157 -0
  15. data/lib/javascript/clean-css/index.js +1 -0
  16. data/lib/javascript/clean-css/lib/clean.js +426 -0
  17. data/lib/javascript/clean-css/lib/colors/hsl-to-hex.js +64 -0
  18. data/lib/javascript/clean-css/lib/colors/long-to-short-hex.js +12 -0
  19. data/lib/javascript/clean-css/lib/colors/rgb-to-hex.js +14 -0
  20. data/lib/javascript/clean-css/lib/colors/shortener.js +174 -0
  21. data/lib/javascript/clean-css/lib/images/url-rebase.js +32 -0
  22. data/lib/javascript/clean-css/lib/images/url-rewriter.js +60 -0
  23. data/lib/javascript/clean-css/lib/imports/inliner.js +319 -0
  24. data/lib/javascript/clean-css/lib/properties/optimizer.js +276 -0
  25. data/lib/javascript/clean-css/lib/properties/override-compactor.js +116 -0
  26. data/lib/javascript/clean-css/lib/properties/processable.js +859 -0
  27. data/lib/javascript/clean-css/lib/properties/scanner.js +20 -0
  28. data/lib/javascript/clean-css/lib/properties/shorthand-compactor.js +244 -0
  29. data/lib/javascript/clean-css/lib/properties/token.js +184 -0
  30. data/lib/javascript/clean-css/lib/properties/validator.js +140 -0
  31. data/lib/javascript/clean-css/lib/selectors/empty-removal.js +30 -0
  32. data/lib/javascript/clean-css/lib/selectors/optimizer.js +341 -0
  33. data/lib/javascript/clean-css/lib/selectors/tokenizer.js +168 -0
  34. data/lib/javascript/clean-css/lib/text/comments.js +83 -0
  35. data/lib/javascript/clean-css/lib/text/escape-store.js +32 -0
  36. data/lib/javascript/clean-css/lib/text/expressions.js +73 -0
  37. data/lib/javascript/clean-css/lib/text/free.js +26 -0
  38. data/lib/javascript/clean-css/lib/text/name-quotes.js +37 -0
  39. data/lib/javascript/clean-css/lib/text/quote-scanner.js +91 -0
  40. data/lib/javascript/clean-css/lib/text/splitter.js +35 -0
  41. data/lib/javascript/clean-css/lib/text/urls.js +41 -0
  42. data/lib/javascript/clean-css/package.json +50 -0
  43. data/lib/javascript/clean-css/test/batch-test.js +56 -0
  44. data/lib/javascript/clean-css/test/bench.js +11 -0
  45. data/lib/javascript/clean-css/test/binary-test.js +323 -0
  46. data/lib/javascript/clean-css/test/data-bench/_partial.css +1 -0
  47. data/lib/javascript/clean-css/test/data-bench/complex.css +4 -0
  48. data/lib/javascript/clean-css/test/data/129-assets/assets/ui.css +2 -0
  49. data/lib/javascript/clean-css/test/data/129-assets/components/bootstrap/css/bootstrap.css +3 -0
  50. data/lib/javascript/clean-css/test/data/129-assets/components/bootstrap/images/glyphs.gif +0 -0
  51. data/lib/javascript/clean-css/test/data/129-assets/components/jquery-ui/css/style.css +6 -0
  52. data/lib/javascript/clean-css/test/data/129-assets/components/jquery-ui/images/next.gif +0 -0
  53. data/lib/javascript/clean-css/test/data/129-assets/components/jquery-ui/images/prev.gif +0 -0
  54. data/lib/javascript/clean-css/test/data/960-min.css +125 -0
  55. data/lib/javascript/clean-css/test/data/960.css +602 -0
  56. data/lib/javascript/clean-css/test/data/big-min.css +2984 -0
  57. data/lib/javascript/clean-css/test/data/big.css +13794 -0
  58. data/lib/javascript/clean-css/test/data/blueprint-min.css +245 -0
  59. data/lib/javascript/clean-css/test/data/blueprint.css +556 -0
  60. data/lib/javascript/clean-css/test/data/charset-mixed-with-fonts-min.css +3 -0
  61. data/lib/javascript/clean-css/test/data/charset-mixed-with-fonts.css +14 -0
  62. data/lib/javascript/clean-css/test/data/font-awesome-ie7-min.css +392 -0
  63. data/lib/javascript/clean-css/test/data/font-awesome-ie7.css +1203 -0
  64. data/lib/javascript/clean-css/test/data/font-awesome-min.css +319 -0
  65. data/lib/javascript/clean-css/test/data/font-awesome.css +540 -0
  66. data/lib/javascript/clean-css/test/data/imports-min.css +5 -0
  67. data/lib/javascript/clean-css/test/data/imports.css +4 -0
  68. data/lib/javascript/clean-css/test/data/issue-117-snippet-min.css +3 -0
  69. data/lib/javascript/clean-css/test/data/issue-117-snippet.css +19 -0
  70. data/lib/javascript/clean-css/test/data/issue-159-snippet-min.css +7 -0
  71. data/lib/javascript/clean-css/test/data/issue-159-snippet.css +7 -0
  72. data/lib/javascript/clean-css/test/data/issue-192-min.css +1 -0
  73. data/lib/javascript/clean-css/test/data/issue-192.css +8 -0
  74. data/lib/javascript/clean-css/test/data/issue-198-min.css +3 -0
  75. data/lib/javascript/clean-css/test/data/issue-198.css +4 -0
  76. data/lib/javascript/clean-css/test/data/issue-232-min.css +2 -0
  77. data/lib/javascript/clean-css/test/data/issue-232.css +17 -0
  78. data/lib/javascript/clean-css/test/data/issue-241-min.css +2 -0
  79. data/lib/javascript/clean-css/test/data/issue-241.css +2 -0
  80. data/lib/javascript/clean-css/test/data/issue-304-min.css +1 -0
  81. data/lib/javascript/clean-css/test/data/issue-304.css +4 -0
  82. data/lib/javascript/clean-css/test/data/issue-305-min.css +1 -0
  83. data/lib/javascript/clean-css/test/data/issue-305.css +3 -0
  84. data/lib/javascript/clean-css/test/data/issue-308-min.css +1 -0
  85. data/lib/javascript/clean-css/test/data/issue-308.css +5 -0
  86. data/lib/javascript/clean-css/test/data/issue-312-min.css +1 -0
  87. data/lib/javascript/clean-css/test/data/issue-312.css +7 -0
  88. data/lib/javascript/clean-css/test/data/issue-337-min.css +1 -0
  89. data/lib/javascript/clean-css/test/data/issue-337.css +4 -0
  90. data/lib/javascript/clean-css/test/data/line-breaks-in-attributes-min.css +2 -0
  91. data/lib/javascript/clean-css/test/data/line-breaks-in-attributes.css +8 -0
  92. data/lib/javascript/clean-css/test/data/partials-absolute/base.css +3 -0
  93. data/lib/javascript/clean-css/test/data/partials-absolute/base2.css +1 -0
  94. data/lib/javascript/clean-css/test/data/partials-absolute/extra/sub.css +3 -0
  95. data/lib/javascript/clean-css/test/data/partials-relative/base.css +3 -0
  96. data/lib/javascript/clean-css/test/data/partials-relative/extra/included.css +1 -0
  97. data/lib/javascript/clean-css/test/data/partials/comment.css +2 -0
  98. data/lib/javascript/clean-css/test/data/partials/extra/down.gif +0 -0
  99. data/lib/javascript/clean-css/test/data/partials/extra/four.css +3 -0
  100. data/lib/javascript/clean-css/test/data/partials/extra/three.css +1 -0
  101. data/lib/javascript/clean-css/test/data/partials/five.css +1 -0
  102. data/lib/javascript/clean-css/test/data/partials/four.css +1 -0
  103. data/lib/javascript/clean-css/test/data/partials/one.css +1 -0
  104. data/lib/javascript/clean-css/test/data/partials/three.css +1 -0
  105. data/lib/javascript/clean-css/test/data/partials/two.css +5 -0
  106. data/lib/javascript/clean-css/test/data/reset-min.css +12 -0
  107. data/lib/javascript/clean-css/test/data/reset.css +64 -0
  108. data/lib/javascript/clean-css/test/data/sample1-min.css +4 -0
  109. data/lib/javascript/clean-css/test/data/sample1.css +12 -0
  110. data/lib/javascript/clean-css/test/data/unsupported/selectors-ie7.css +20 -0
  111. data/lib/javascript/clean-css/test/data/unsupported/selectors-ie8.css +17 -0
  112. data/lib/javascript/clean-css/test/module-test.js +185 -0
  113. data/lib/javascript/clean-css/test/protocol-imports-test.js +409 -0
  114. data/lib/javascript/clean-css/test/text/splitter-test.js +20 -0
  115. data/lib/javascript/clean-css/test/unit-test.js +2071 -0
  116. data/lib/ruby-clean-css.rb +6 -0
  117. data/lib/ruby-clean-css/compressor.rb +142 -0
  118. data/lib/ruby-clean-css/exports.rb +258 -0
  119. data/lib/ruby-clean-css/railtie.rb +27 -0
  120. data/lib/ruby-clean-css/sprockets.rb +19 -0
  121. data/lib/ruby-clean-css/version.rb +5 -0
  122. data/ruby-clean-css.gemspec +30 -0
  123. data/test/test_compressor.rb +84 -0
  124. metadata +203 -0
@@ -0,0 +1,3 @@
1
+ [submodule "lib/javascript/clean-css"]
2
+ path = lib/javascript/clean-css
3
+ url = https://github.com/GoalSmashers/clean-css.git
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #### If you wanted to create a Ruby script that took raw CSS from STDIN and
4
+ #### emitted the minified result to STDOUT, here's how you might do it. (Errors
5
+ #### and warnings are sent to STDERR.)
6
+
7
+ require 'ruby-clean-css'
8
+
9
+ begin
10
+ compressor = RubyCleanCSS::Compressor.new
11
+ compressor.compress(ARGV[0] || ARGF.read)
12
+ rescue => e
13
+ STDERR.puts("FAILED: #{e.inspect}")
14
+ STDERR.puts(e.backtrace.join("\n") + "\n")
15
+ ensure
16
+ out = compressor.last_result
17
+ STDERR.puts(out[:errors].join("\n")) if out[:errors].any?
18
+ STDERR.puts(out[:warnings].join("\n")) if out[:warnings].any?
19
+ STDOUT.puts(out[:min])
20
+ end
21
+
22
+
23
+ #### This example itself is runnable. For example, try:
24
+ ####
25
+ #### cat raw.css | ruby EXAMPLE.md > min.css
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify dependencies in ruby-clean-css.gemspec!
4
+ gemspec
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby-clean-css (0.0.2)
5
+ commonjs
6
+ therubyracer
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.3.6)
12
+ commonjs (0.2.7)
13
+ crack (0.4.2)
14
+ safe_yaml (~> 1.0.0)
15
+ libv8 (3.16.14.3)
16
+ ref (1.0.5)
17
+ safe_yaml (1.0.3)
18
+ therubyracer (0.12.1)
19
+ libv8 (~> 3.16.14.0)
20
+ ref
21
+ webmock (1.18.0)
22
+ addressable (>= 2.3.6)
23
+ crack (>= 0.3.2)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ ruby-clean-css!
30
+ webmock
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2014 OverDrive, Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is furnished
8
+ to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
17
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
+ DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,106 @@
1
+ # Ruby-Clean-CSS compressor
2
+
3
+ This gem provides a Ruby interface to the
4
+ [Clean-CSS](https://github.com/GoalSmashers/clean-css) Node library for
5
+ minifying CSS files.
6
+
7
+ Ruby-Clean-CSS provides much more modern and compatible minification of
8
+ stylesheets than the old [YUI
9
+ compressor](https://github.com/sstephenson/ruby-yui-compressor) (which was
10
+ [discontinued](http://www.yuiblog.com/blog/2012/10/16/state-of-yui-compressor)
11
+ by Yahoo in 2012).
12
+
13
+
14
+ ## Usage
15
+
16
+ You can use this library with Rails, or with Sprockets in non-Rails projects,
17
+ or simply as a standalone library.
18
+
19
+
20
+ ### As a plain Ruby library:
21
+
22
+ Here's the simplest thing that could possibly work:
23
+
24
+ >> require 'ruby-clean-css'
25
+ >> RubyCleanCSS::Compressor.new.compress('a { color: chartreuse; }')
26
+ => "a{color:#7fff00}"
27
+
28
+
29
+ ### With Sprockets:
30
+
31
+ You can register the Compressor as Sprocket's default CSS compressor like this:
32
+
33
+ require 'ruby-clean-css'
34
+ require 'ruby-clean-css/sprockets'
35
+ RubyCleanCSS::Sprockets.register(sprockets_env)
36
+
37
+
38
+ ### With Rails 3 or Rails 4:
39
+
40
+ Just add this gem to the `:assets` group of your `Gemfile`. Ruby-Clean-CSS
41
+ will automatically become the default compressor for CSS files.
42
+
43
+ If you prefer, you can make it explicit in `config/environments/production.rb`:
44
+
45
+ config.assets.css_compressor = :cleancss
46
+
47
+ Alternatively, if you want to customize the compressor with options,
48
+ you can assign an instance of the compressor to that setting:
49
+
50
+ config.assets.css_compressor = RubyCleanCSS::Compressor.new(
51
+ rebase_urls: false,
52
+ keep_breaks: true
53
+ )
54
+
55
+
56
+ ## Options
57
+
58
+ This library supports the following [Clean-CSS
59
+ options](https://github.com/GoalSmashers/clean-css#how-to-use-clean-css-programmatically):
60
+
61
+ - `keep_special_comments` - A "special comment" is one that begins with `/*!`.
62
+ You can keep them all with `:all`, just the first with `:first`, or
63
+ remove them all with `:none`. The default is `:all`.
64
+ - `keep_breaks` - By default, all linebreaks are stripped. Set to `true` to
65
+ retain them.
66
+ - `root` - This is the path used to resolve absolute `@import` rules and rebase
67
+ relative URLS. A string. Defaults to the present working directory.
68
+ - `relative_to` - This path is used to resovle relative `@import` rules and
69
+ URLs. A string. No default.
70
+ - `process_import` - By default, stylesheets included via `@import` are fetched
71
+ and minified inline. Set to false to retain `@import` lines unmodified.
72
+ - `rebase_urls` - By default, all URLs are rebased to the root. Set to `false`
73
+ to prevent rebasing.
74
+ - `advanced` - By default, Clean-CSS applies some advanced optimizations,
75
+ like selector and property merging, reduction, etc). Set to `false` to
76
+ prevent these optimizations.
77
+ - `rounding_precision` - The rounding precision on measurements in your CSS.
78
+ An integer, defaulting to `2`.
79
+ - `compatibility` - Use this to force Clean-CSS to be compatible with `ie7`
80
+ or `ie8`. Default is neither. Supply as a symbol (`:ie7`) or
81
+ string (`'ie7'`).
82
+
83
+ The following options are not yet supported by this library:
84
+
85
+ - `benchmark`
86
+ - `debug`
87
+
88
+ In keeping with the Node library's interface, there are some synonyms available:
89
+
90
+ - `:no_rebase => true` is the same as `:rebase_urls => false`.
91
+ - `:no_advanced => true` is the same as `:advanced => false`.
92
+ - `:keep_special_comments` has an alternative syntax: `'*'` means `:all`,
93
+ `1` means `:first` and `0` means `:none`.
94
+
95
+
96
+ ## Contributing
97
+
98
+ Pull requests are welcome. Please supply a test case with your PR. You
99
+ typically run tests like this:
100
+
101
+ bundle exec ruby test/test_compressor.rb
102
+
103
+ ## License
104
+
105
+ Ruby-Clean-CSS is released under the [MIT
106
+ Licence](https://github.com/joseph/ruby-clean-css/blob/master/LICENSE).
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /cleancss-browser.js
3
+ /node_modules
4
+ /npm-debug.log
@@ -0,0 +1,3 @@
1
+ .git
2
+ node_modules
3
+ cleancss-browser.js
@@ -0,0 +1,14 @@
1
+ {
2
+ "camelcase": true,
3
+ "curly": false,
4
+ "eqeqeq": false,
5
+ "immed": true,
6
+ "indent": 2,
7
+ "noarg": true,
8
+ "node": true,
9
+ "plusplus": false,
10
+ "quotmark": "single",
11
+ "strict": false,
12
+ "undef": true,
13
+ "unused": true
14
+ }
@@ -0,0 +1,11 @@
1
+ language: node_js
2
+ node_js:
3
+ - '0.8'
4
+ - '0.10'
5
+ - '0.11'
6
+ matrix:
7
+ allow_failures:
8
+ - node_js: '0.11'
9
+ install:
10
+ - npm update npm -g
11
+ - npm install
@@ -0,0 +1,556 @@
1
+ [2.2.13 / 2014-08-12](https://github.com/GoalSmashers/clean-css/compare/v2.2.12...v2.2.13)
2
+ ==================
3
+
4
+ * Fixed issue [#337](https://github.com/GoalSmashers/clean-css/issues/337) - handling component importance.
5
+
6
+ [2.2.12 / 2014-08-02](https://github.com/GoalSmashers/clean-css/compare/v2.2.11...v2.2.12)
7
+ ==================
8
+
9
+ * Fixed issue with tokenizer removing first selector after an unknown @ rule.
10
+ * Fixed issue [#329](https://github.com/GoalSmashers/clean-css/issues/329) - font shorthands incorrectly processed.
11
+ * Fixed issue [#332](https://github.com/GoalSmashers/clean-css/issues/332) - background shorthand with colors.
12
+ * Refixed issue [#325](https://github.com/GoalSmashers/clean-css/issues/325) - invalid charset declarations.
13
+
14
+ [2.2.11 / 2014-07-28](https://github.com/GoalSmashers/clean-css/compare/v2.2.10...v2.2.11)
15
+ ==================
16
+
17
+ * Fixed issue [#326](https://github.com/GoalSmashers/clean-css/issues/326) - background-size regression.
18
+
19
+ [2.2.10 / 2014-07-27](https://github.com/GoalSmashers/clean-css/compare/v2.2.9...v2.2.10)
20
+ ==================
21
+
22
+ * Improved performance of advanced mode validators.
23
+ * Fixed issue [#307](https://github.com/GoalSmashers/clean-css/issues/307) - background-color in muliple backgrounds.
24
+ * Fixed issue [#322](https://github.com/GoalSmashers/clean-css/issues/322) - adds background-size support.
25
+ * Fixed issue [#323](https://github.com/GoalSmashers/clean-css/issues/323) - stripping variable references.
26
+ * Fixed issue [#325](https://github.com/GoalSmashers/clean-css/issues/325) - removing invalid @charset declarations.
27
+
28
+ [2.2.9 / 2014-07-23](https://github.com/GoalSmashers/clean-css/compare/v2.2.8...v2.2.9)
29
+ ==================
30
+
31
+ * Adds `background` normalization according to W3C spec.
32
+ * Fixed issue [#316](https://github.com/GoalSmashers/clean-css/issues/316) - incorrect background processing.
33
+
34
+ [2.2.8 / 2014-07-14](https://github.com/GoalSmashers/clean-css/compare/v2.2.7...v2.2.8)
35
+ ==================
36
+
37
+ * Fixed issue [#313](https://github.com/GoalSmashers/clean-css/issues/313) - processing comment marks in urls.
38
+ * Fixed issue [#315](https://github.com/GoalSmashers/clean-css/issues/315) - rgba/hsla -> transparent in gradients.
39
+
40
+ [2.2.7 / 2014-07-10](https://github.com/GoalSmashers/clean-css/compare/v2.2.6...v2.2.7)
41
+ ==================
42
+
43
+ * Fixed issue [#304](https://github.com/GoalSmashers/clean-css/issues/304) - merging multiple backgrounds.
44
+ * Fixed issue [#312](https://github.com/GoalSmashers/clean-css/issues/312) - merging with mixed repeat.
45
+
46
+ [2.2.6 / 2014-07-05](https://github.com/GoalSmashers/clean-css/compare/v2.2.5...v2.2.6)
47
+ ==================
48
+
49
+ * Adds faster quote matching in QuoteScanner.
50
+ * Improves QuoteScanner to handle comments correctly.
51
+ * Fixed issue [#308](https://github.com/GoalSmashers/clean-css/issues/308) - parsing comments in quoted urls.
52
+ * Fixed issue [#311](https://github.com/GoalSmashers/clean-css/issues/311) - leading/trailing decimal points.
53
+
54
+ [2.2.5 / 2014-06-29](https://github.com/GoalSmashers/clean-css/compare/v2.2.4...v2.2.5)
55
+ ==================
56
+
57
+ * Adds removing extra spaces around / in border-radius.
58
+ * Adds replacing same horizontal & vertical value in border-radius.
59
+ * Fixed issue [#305](https://github.com/GoalSmashers/clean-css/issues/305) - allows width keywords in border-width.
60
+
61
+ [2.2.4 / 2014-06-27](https://github.com/GoalSmashers/clean-css/compare/v2.2.3...v2.2.4)
62
+ ==================
63
+
64
+ * Fixed issue [#301](https://github.com/GoalSmashers/clean-css/issues/301) - proper border radius processing.
65
+ * Fixed issue [#303](https://github.com/GoalSmashers/clean-css/issues/303) - correctly preserves viewport units.
66
+
67
+ [2.2.3 / 2014-06-24](https://github.com/GoalSmashers/clean-css/compare/v2.2.2...v2.2.3)
68
+ ==================
69
+
70
+ * Fixed issue [#302](https://github.com/GoalSmashers/clean-css/issues/302) - handling of outline-style: auto.
71
+
72
+ [2.2.2 / 2014-06-18](https://github.com/GoalSmashers/clean-css/compare/v2.2.1...v2.2.2)
73
+ ==================
74
+
75
+ * Fixed issue [#297](https://github.com/GoalSmashers/clean-css/issues/297) - box-shadow zeros minification.
76
+
77
+ [2.2.1 / 2014-06-14](https://github.com/GoalSmashers/clean-css/compare/v2.2.0...v2.2.1)
78
+ ==================
79
+
80
+ * Fixes new property optimizer for 'none' values.
81
+ * Fixed issue [#294](https://github.com/GoalSmashers/clean-css/issues/294) - space after rgba/hsla in IE<=11.
82
+
83
+ [2.2.0 / 2014-06-11](https://github.com/GoalSmashers/clean-css/compare/v2.1.8...v2.2.0)
84
+ ==================
85
+
86
+ * Adds a better algorithm for quotation marks' removal.
87
+ * Adds a better non-adjacent optimizer compatible with the upcoming new property optimizer.
88
+ * Adds minifying remote files directly from CLI.
89
+ * Adds `--rounding-precision` to control rounding precision.
90
+ * Moves quotation matching into a `QuoteScanner` class.
91
+ * Adds `npm run browserify` for creating embeddable version of clean-css.
92
+ * Fixed list-style-* advanced processing.
93
+ * Fixed issue [#134](https://github.com/GoalSmashers/clean-css/issues/134) - merges properties into shorthand form.
94
+ * Fixed issue [#164](https://github.com/GoalSmashers/clean-css/issues/164) - removes default values if not needed.
95
+ * Fixed issue [#168](https://github.com/GoalSmashers/clean-css/issues/168) - adds better property merging algorithm.
96
+ * Fixed issue [#173](https://github.com/GoalSmashers/clean-css/issues/173) - merges same properties if grouped.
97
+ * Fixed issue [#184](https://github.com/GoalSmashers/clean-css/issues/184) - uses `!important` for optimization opportunities.
98
+ * Fixed issue [#190](https://github.com/GoalSmashers/clean-css/issues/190) - uses shorthand to override another shorthand.
99
+ * Fixed issue [#197](https://github.com/GoalSmashers/clean-css/issues/197) - adds borders merging by understandability.
100
+ * Fixed issue [#210](https://github.com/GoalSmashers/clean-css/issues/210) - adds temporary workaround for aggressive merging.
101
+ * Fixed issue [#246](https://github.com/GoalSmashers/clean-css/issues/246) - removes IE hacks when not in compatibility mode.
102
+ * Fixed issue [#247](https://github.com/GoalSmashers/clean-css/issues/247) - removes deprecated `selectorsMergeMode` switch.
103
+ * Refixed issue [#250](https://github.com/GoalSmashers/clean-css/issues/250) - based on new quotation marks removal.
104
+ * Fixed issue [#257](https://github.com/GoalSmashers/clean-css/issues/257) - turns hsla/rgba to transparent if possible.
105
+ * Fixed issue [#265](https://github.com/GoalSmashers/clean-css/issues/265) - adds support for multiple input files.
106
+ * Fixed issue [#275](https://github.com/GoalSmashers/clean-css/issues/275) - handling transform properties.
107
+ * Fixed issue [#276](https://github.com/GoalSmashers/clean-css/issues/276) - corrects unicode handling.
108
+ * Fixed issue [#288](https://github.com/GoalSmashers/clean-css/issues/288) - adds smarter expression parsing.
109
+ * Fixed issue [#293](https://github.com/GoalSmashers/clean-css/issues/293) - handles escaped @ symbols in classnames and ids.
110
+
111
+ [2.1.8 / 2014-03-28](https://github.com/GoalSmashers/clean-css/compare/v2.1.7...v2.1.8)
112
+ ==================
113
+
114
+ * Fixed issue [#267](https://github.com/GoalSmashers/clean-css/issues/267) - incorrect non-adjacent selector merging.
115
+
116
+ [2.1.7 / 2014-03-24](https://github.com/GoalSmashers/clean-css/compare/v2.1.6...v2.1.7)
117
+ ==================
118
+
119
+ * Fixed issue [#264](https://github.com/GoalSmashers/clean-css/issues/264) - `@import` statements inside comments.
120
+
121
+ [2.1.6 / 2014-03-10](https://github.com/GoalSmashers/clean-css/compare/v2.1.5...v2.1.6)
122
+ ==================
123
+
124
+ * Fixed issue [#258](https://github.com/GoalSmashers/clean-css/issues/258) - wrong `@import` handling in `EmptyRemoval`.
125
+
126
+ [2.1.5 / 2014-03-07](https://github.com/GoalSmashers/clean-css/compare/v2.1.4...v2.1.5)
127
+ ==================
128
+
129
+ * Fixed issue [#255](https://github.com/GoalSmashers/clean-css/issues/255) - incorrect processing of a trailing `-0`.
130
+
131
+ [2.1.4 / 2014-03-01](https://github.com/GoalSmashers/clean-css/compare/v2.1.3...v2.1.4)
132
+ ==================
133
+
134
+ * Fixed issue [#250](https://github.com/GoalSmashers/clean-css/issues/250) - correctly handle JSON data in quotations.
135
+
136
+ [2.1.3 / 2014-02-26](https://github.com/GoalSmashers/clean-css/compare/v2.1.2...v2.1.3)
137
+ ==================
138
+
139
+ * Fixed issue [#248](https://github.com/GoalSmashers/clean-css/issues/248) - incorrect merging for vendor selectors.
140
+
141
+ [2.1.2 / 2014-02-25](https://github.com/GoalSmashers/clean-css/compare/v2.1.1...v2.1.2)
142
+ ==================
143
+
144
+ * Fixed issue [#245](https://github.com/GoalSmashers/clean-css/issues/245) - incorrect handling of backslash IE hack.
145
+
146
+ [2.1.1 / 2014-02-18](https://github.com/GoalSmashers/clean-css/compare/v2.1.0...v2.1.1)
147
+ ==================
148
+
149
+ * Adds faster selectors processing in advanced optimizer.
150
+ * Fixed issue [#241](https://github.com/GoalSmashers/clean-css/issues/241) - incorrect handling of `:not()` selectors.
151
+
152
+ [2.1.0 / 2014-02-13](https://github.com/GoalSmashers/clean-css/compare/v2.0.8...v2.1.0)
153
+ ==================
154
+
155
+ * Adds an optional callback to minify method.
156
+ * Deprecates `--selectors-merge-mode` / `selectorsMergeMode` in favor to `--compatibility` / `compatibility`.
157
+ * Fixes debug mode stats for stylesheets using `@import` statements.
158
+ * Skips empty removal if advanced processing is enabled.
159
+ * Fixed issue [#85](https://github.com/GoalSmashers/clean-css/issues/85) - resolving protocol `@import`s.
160
+ * Fixed issue [#160](https://github.com/GoalSmashers/clean-css/issues/160) - re-runs optimizer until a clean pass.
161
+ * Fixed issue [#161](https://github.com/GoalSmashers/clean-css/issues/161) - improves tokenizer performance.
162
+ * Fixed issue [#163](https://github.com/GoalSmashers/clean-css/issues/163) - round pixels to 2nd decimal place.
163
+ * Fixed issue [#165](https://github.com/GoalSmashers/clean-css/issues/165) - extra space after trailing parenthesis.
164
+ * Fixed issue [#186](https://github.com/GoalSmashers/clean-css/issues/186) - strip unit from `0rem`.
165
+ * Fixed issue [#207](https://github.com/GoalSmashers/clean-css/issues/207) - bug in parsing protocol `@import`s.
166
+ * Fixed issue [#213](https://github.com/GoalSmashers/clean-css/issues/213) - faster rgb to hex transforms.
167
+ * Fixed issue [#215](https://github.com/GoalSmashers/clean-css/issues/215) - leading zeros in numerical values.
168
+ * Fixed issue [#217](https://github.com/GoalSmashers/clean-css/issues/217) - whitespace inside attribute selectors and urls.
169
+ * Fixed issue [#218](https://github.com/GoalSmashers/clean-css/issues/218) - `@import` statements cleanup.
170
+ * Fixed issue [#220](https://github.com/GoalSmashers/clean-css/issues/220) - selector between comments.
171
+ * Fixed issue [#223](https://github.com/GoalSmashers/clean-css/issues/223) - two-pass adjacent selectors merging.
172
+ * Fixed issue [#226](https://github.com/GoalSmashers/clean-css/issues/226) - don't minify `border:none` to `border:0`.
173
+ * Fixed issue [#229](https://github.com/GoalSmashers/clean-css/issues/229) - improved processing of fraction numbers.
174
+ * Fixed issue [#230](https://github.com/GoalSmashers/clean-css/issues/230) - better handling of zero values.
175
+ * Fixed issue [#235](https://github.com/GoalSmashers/clean-css/issues/235) - IE7 compatibility mode.
176
+ * Fixed issue [#236](https://github.com/GoalSmashers/clean-css/issues/236) - incorrect rebasing with nested `import`s.
177
+
178
+ [2.0.8 / 2014-02-07](https://github.com/GoalSmashers/clean-css/compare/v2.0.7...v2.0.8)
179
+ ==================
180
+
181
+ * Fixed issue [#232](https://github.com/GoalSmashers/clean-css/issues/232) - edge case in non-adjacent selectors merging.
182
+
183
+ [2.0.7 / 2014-01-16](https://github.com/GoalSmashers/clean-css/compare/v2.0.6...v2.0.7)
184
+ ==================
185
+
186
+ * Fixed issue [#208](https://github.com/GoalSmashers/clean-css/issues/208) - don't swallow @page and @viewport.
187
+
188
+ [2.0.6 / 2014-01-04](https://github.com/GoalSmashers/clean-css/compare/v2.0.5...v2.0.6)
189
+ ==================
190
+
191
+ * Fixed issue [#198](https://github.com/GoalSmashers/clean-css/issues/198) - process comments and `@import`s correctly.
192
+ * Fixed issue [#205](https://github.com/GoalSmashers/clean-css/issues/205) - freeze on broken @import declaration.
193
+
194
+ [2.0.5 / 2014-01-03](https://github.com/GoalSmashers/clean-css/compare/v2.0.4...v2.0.5)
195
+ ==================
196
+
197
+ * Fixed issue [#199](https://github.com/GoalSmashers/clean-css/issues/199) - keep line breaks with no advanced optimizations.
198
+ * Fixed issue [#203](https://github.com/GoalSmashers/clean-css/issues/203) - Buffer as a first argument to minify method.
199
+
200
+ [2.0.4 / 2013-12-19](https://github.com/GoalSmashers/clean-css/compare/v2.0.3...v2.0.4)
201
+ ==================
202
+
203
+ * Fixed issue [#193](https://github.com/GoalSmashers/clean-css/issues/193) - HSL color space normalization.
204
+
205
+ [2.0.3 / 2013-12-18](https://github.com/GoalSmashers/clean-css/compare/v2.0.2...v2.0.3)
206
+ ==================
207
+
208
+ * Fixed issue [#191](https://github.com/GoalSmashers/clean-css/issues/191) - leading numbers in font/animation names.
209
+ * Fixed issue [#192](https://github.com/GoalSmashers/clean-css/issues/192) - many `@import`s inside a comment.
210
+
211
+ [2.0.2 / 2013-11-18](https://github.com/GoalSmashers/clean-css/compare/v2.0.1...v2.0.2)
212
+ ==================
213
+
214
+ * Fixed issue [#177](https://github.com/GoalSmashers/clean-css/issues/177) - process broken content correctly.
215
+
216
+ [2.0.1 / 2013-11-14](https://github.com/GoalSmashers/clean-css/compare/v2.0.0...v2.0.1)
217
+ ==================
218
+
219
+ * Fixed issue [#176](https://github.com/GoalSmashers/clean-css/issues/176) - hangs on `undefined` keyword.
220
+
221
+ [2.0.0 / 2013-11-04](https://github.com/GoalSmashers/clean-css/compare/v1.1.7...v2.0.0)
222
+ ==================
223
+
224
+ * Adds simplified and more advanced text escaping / restoring via `EscapeStore` class.
225
+ * Adds simplified and much faster empty elements removal.
226
+ * Adds missing `@import` processing to our benchmark (run via `npm run bench`).
227
+ * Adds CSS tokenizer which will make it possible to optimize content by reordering and/or merging selectors.
228
+ * Adds basic optimizer removing duplicate selectors from a list.
229
+ * Adds merging duplicate properties within a single selector's body.
230
+ * Adds merging adjacent selectors within a scope (single and multiple ones).
231
+ * Changes behavior of `--keep-line-breaks`/`keepBreaks` option to keep breaks after trailing braces only.
232
+ * Makes all multiple selectors ordered alphabetically (aids merging).
233
+ * Adds property overriding so more coarse properties override more granular ones.
234
+ * Adds reducing non-adjacent selectors.
235
+ * Adds `--skip-advanced`/`noAdvanced` switch to disable advanced optimizations.
236
+ * Adds reducing non-adjacent selectors when overridden by more complex selectors.
237
+ * Fixed issue [#138](https://github.com/GoalSmashers/clean-css/issues/138) - makes CleanCSS interface OO.
238
+ * Fixed issue [#139](https://github.com/GoalSmashers/clean-css/issues/138) - consistent error & warning handling.
239
+ * Fixed issue [#145](https://github.com/GoalSmashers/clean-css/issues/145) - debug mode in library too.
240
+ * Fixed issue [#157](https://github.com/GoalSmashers/clean-css/issues/157) - gets rid of `removeEmpty` option.
241
+ * Fixed issue [#159](https://github.com/GoalSmashers/clean-css/issues/159) - escaped quotes inside content.
242
+ * Fixed issue [#162](https://github.com/GoalSmashers/clean-css/issues/162) - strip quotes from Base64 encoded URLs.
243
+ * Fixed issue [#166](https://github.com/GoalSmashers/clean-css/issues/166) - `debug` formatting in CLI
244
+ * Fixed issue [#167](https://github.com/GoalSmashers/clean-css/issues/167) - `background:transparent` minification.
245
+
246
+ [1.1.7 / 2013-10-28](https://github.com/GoalSmashers/clean-css/compare/v1.1.6...v1.1.7)
247
+ ==================
248
+
249
+ * Fixed issue [#156](https://github.com/GoalSmashers/clean-css/issues/156) - `@import`s inside comments.
250
+
251
+ [1.1.6 / 2013-10-26](https://github.com/GoalSmashers/clean-css/compare/v1.1.5...v1.1.6)
252
+ ==================
253
+
254
+ * Fixed issue [#155](https://github.com/GoalSmashers/clean-css/issues/155) - broken irregular CSS content.
255
+
256
+ [1.1.5 / 2013-10-24](https://github.com/GoalSmashers/clean-css/compare/v1.1.4...v1.1.5)
257
+ ==================
258
+
259
+ * Fixed issue [#153](https://github.com/GoalSmashers/clean-css/issues/153) - keepSpecialComments 0/1 as a string.
260
+
261
+ [1.1.4 / 2013-10-23](https://github.com/GoalSmashers/clean-css/compare/v1.1.3...v1.1.4)
262
+ ==================
263
+
264
+ * Fixed issue [#152](https://github.com/GoalSmashers/clean-css/issues/152) - adds an option to disable rebasing.
265
+
266
+ [1.1.3 / 2013-10-04](https://github.com/GoalSmashers/clean-css/compare/v1.1.2...v1.1.3)
267
+ ==================
268
+
269
+ * Fixed issue [#150](https://github.com/GoalSmashers/clean-css/issues/150) - minifying `background:none`.
270
+
271
+ [1.1.2 / 2013-09-29](https://github.com/GoalSmashers/clean-css/compare/v1.1.1...v1.1.2)
272
+ ==================
273
+
274
+ * Fixed issue [#149](https://github.com/GoalSmashers/clean-css/issues/149) - shorthand font property.
275
+
276
+ [1.1.1 / 2013-09-07](https://github.com/GoalSmashers/clean-css/compare/v1.1.0...v1.1.1)
277
+ ==================
278
+
279
+ * Fixed issue [#144](https://github.com/GoalSmashers/clean-css/issues/144) - skip URLs rebasing by default.
280
+
281
+ [1.1.0 / 2013-09-06](https://github.com/GoalSmashers/clean-css/compare/v1.0.12...v1.1.0)
282
+ ==================
283
+
284
+ * Renamed lib's `debug` option to `benchmark` when doing per-minification benchmarking.
285
+ * Added simplified comments processing & imports.
286
+ * Fixed issue [#43](https://github.com/GoalSmashers/clean-css/issues/43) - `--debug` switch for minification stats.
287
+ * Fixed issue [#65](https://github.com/GoalSmashers/clean-css/issues/65) - full color name / hex shortening.
288
+ * Fixed issue [#84](https://github.com/GoalSmashers/clean-css/issues/84) - support for `@import` with media queries.
289
+ * Fixed issue [#124](https://github.com/GoalSmashers/clean-css/issues/124) - raise error on broken imports.
290
+ * Fixed issue [#126](https://github.com/GoalSmashers/clean-css/issues/126) - proper CSS expressions handling.
291
+ * Fixed issue [#129](https://github.com/GoalSmashers/clean-css/issues/129) - rebasing imported URLs.
292
+ * Fixed issue [#130](https://github.com/GoalSmashers/clean-css/issues/130) - better code modularity.
293
+ * Fixed issue [#135](https://github.com/GoalSmashers/clean-css/issues/135) - require node.js 0.8+.
294
+
295
+ [1.0.12 / 2013-07-19](https://github.com/GoalSmashers/clean-css/compare/v1.0.11...v1.0.12)
296
+ ===================
297
+
298
+ * Fixed issue [#121](https://github.com/GoalSmashers/clean-css/issues/121) - ability to skip `@import` processing.
299
+
300
+ [1.0.11 / 2013-07-08](https://github.com/GoalSmashers/clean-css/compare/v1.0.10...v1.0.11)
301
+ ===================
302
+
303
+ * Fixed issue [#117](https://github.com/GoalSmashers/clean-css/issues/117) - line break escaping in comments.
304
+
305
+ [1.0.10 / 2013-06-13](https://github.com/GoalSmashers/clean-css/compare/v1.0.9...v1.0.10)
306
+ ===================
307
+
308
+ * Fixed issue [#114](https://github.com/GoalSmashers/clean-css/issues/114) - comments in imported stylesheets.
309
+
310
+ [1.0.9 / 2013-06-11](https://github.com/GoalSmashers/clean-css/compare/v1.0.8...v1.0.9)
311
+ ==================
312
+
313
+ * Fixed issue [#113](https://github.com/GoalSmashers/clean-css/issues/113) - `@import` in comments.
314
+
315
+ [1.0.8 / 2013-06-10](https://github.com/GoalSmashers/clean-css/compare/v1.0.7...v1.0.8)
316
+ ==================
317
+
318
+ * Fixed issue [#112](https://github.com/GoalSmashers/clean-css/issues/112) - reducing `box-shadow` zeros.
319
+
320
+ [1.0.7 / 2013-06-05](https://github.com/GoalSmashers/clean-css/compare/v1.0.6...v1.0.7)
321
+ ==================
322
+
323
+ * Support for `@import` URLs starting with `//`.
324
+ By [@petetak](https://github.com/petetak).
325
+
326
+ [1.0.6 / 2013-06-04](https://github.com/GoalSmashers/clean-css/compare/v1.0.5...v1.0.6)
327
+ ==================
328
+
329
+ * Fixed issue [#110](https://github.com/GoalSmashers/clean-css/issues/110) - data URIs in URLs.
330
+
331
+ [1.0.5 / 2013-05-26](https://github.com/GoalSmashers/clean-css/compare/v1.0.4...v1.0.5)
332
+ ==================
333
+
334
+ * Fixed issue [#107](https://github.com/GoalSmashers/clean-css/issues/107) - data URIs in imported stylesheets.
335
+
336
+ 1.0.4 / 2013-05-23
337
+ ==================
338
+
339
+ * Rewrite relative URLs in imported stylesheets.
340
+ By [@bluej100](https://github.com/bluej100).
341
+
342
+ 1.0.3 / 2013-05-20
343
+ ==================
344
+
345
+ * Support alternative `@import` syntax with file name not wrapped inside `url()` statement.
346
+ By [@bluej100](https://github.com/bluej100).
347
+
348
+ 1.0.2 / 2013-04-29
349
+ ==================
350
+
351
+ * Fixed issue [#97](https://github.com/GoalSmashers/clean-css/issues/97) - `--remove-empty` & FontAwesome.
352
+
353
+ 1.0.1 / 2013-04-08
354
+ ==================
355
+
356
+ * Do not pick up `bench` and `test` while building `npm` package.
357
+ By [@sindresorhus](https://https://github.com/sindresorhus).
358
+
359
+ 1.0.0 / 2013-03-30
360
+ ==================
361
+
362
+ * Fixed issue [#2](https://github.com/GoalSmashers/clean-css/issues/2) - resolving `@import` rules.
363
+ * Fixed issue [#44](https://github.com/GoalSmashers/clean-css/issues/44) - examples in `--help`.
364
+ * Fixed issue [#46](https://github.com/GoalSmashers/clean-css/issues/46) - preserving special characters in URLs and attributes.
365
+ * Fixed issue [#80](https://github.com/GoalSmashers/clean-css/issues/80) - quotation in multi line strings.
366
+ * Fixed issue [#83](https://github.com/GoalSmashers/clean-css/issues/83) - HSL to hex color conversions.
367
+ * Fixed issue [#86](https://github.com/GoalSmashers/clean-css/issues/86) - broken `@charset` replacing.
368
+ * Fixed issue [#88](https://github.com/GoalSmashers/clean-css/issues/88) - removes space in `! important`.
369
+ * Fixed issue [#92](https://github.com/GoalSmashers/clean-css/issues/92) - uppercase hex to short versions.
370
+
371
+ 0.10.2 / 2013-03-19
372
+ ===================
373
+
374
+ * Fixed issue [#79](https://github.com/GoalSmashers/clean-css/issues/79) - node.js 0.10.x compatibility.
375
+
376
+ 0.10.1 / 2013-02-14
377
+ ===================
378
+
379
+ * Fixed issue [#66](https://github.com/GoalSmashers/clean-css/issues/66) - line breaks without extra spaces should
380
+ be handled correctly.
381
+
382
+ 0.10.0 / 2013-02-09
383
+ ===================
384
+
385
+ * Switched from [optimist](https://github.com/substack/node-optimist) to
386
+ [commander](https://github.com/visionmedia/commander.js) for CLI processing.
387
+ * Changed long options from `--removeempty` to `--remove-empty` and from `--keeplinebreaks` to `--keep-line-breaks`.
388
+ * Fixed performance issue with replacing multiple `@charset` declarations and issue
389
+ with line break after `@charset` when using `keepLineBreaks` option. By [@rrjaime](https://github.com/rrjamie).
390
+ * Removed Makefile in favor to `npm run` commands (e.g. `make check` -> `npm run check`).
391
+ * Fixed issue [#47](https://github.com/GoalSmashers/clean-css/issues/47) - commandline issues on Windows.
392
+ * Fixed issue [#49](https://github.com/GoalSmashers/clean-css/issues/49) - remove empty selectors from media query.
393
+ * Fixed issue [#52](https://github.com/GoalSmashers/clean-css/issues/52) - strip fraction zeros if not needed.
394
+ * Fixed issue [#58](https://github.com/GoalSmashers/clean-css/issues/58) - remove colon where possible.
395
+ * Fixed issue [#59](https://github.com/GoalSmashers/clean-css/issues/59) - content property handling.
396
+
397
+ 0.9.1 / 2012-12-19
398
+ ==================
399
+
400
+ * Fixed issue [#37](https://github.com/GoalSmashers/clean-css/issues/37) - converting
401
+ `white` and other colors in class names (reported by [@malgorithms](https://github.com/malgorithms)).
402
+
403
+ 0.9.0 / 2012-12-15
404
+ ==================
405
+
406
+ * Added stripping quotation from font names (if possible).
407
+ * Added stripping quotation from `@keyframes` declaration, `animation` and
408
+ `animation-name` property.
409
+ * Added stripping quotations from attributes' value (e.g. `[data-target='x']`).
410
+ * Added better hex->name and name->hex color shortening.
411
+ * Added `font: normal` and `font: bold` shortening the same way as `font-weight` is.
412
+ * Refactored shorthand selectors and added `border-radius`, `border-style`
413
+ and `border-color` shortening.
414
+ * Added `margin`, `padding` and `border-width` shortening.
415
+ * Added removing line break after commas.
416
+ * Fixed removing whitespace inside media query definition.
417
+ * Added removing line breaks after a comma, so all declarations are one-liners now.
418
+ * Speed optimizations (~10% despite many new features).
419
+ * Added [JSHint](https://github.com/jshint/jshint/) validation rules via `make check`.
420
+
421
+ 0.8.3 / 2012-11-29
422
+ ==================
423
+
424
+ * Fixed HSL/HSLA colors processing.
425
+
426
+ 0.8.2 / 2012-10-31
427
+ ==================
428
+
429
+ * Fixed shortening hex colors and their relation to hashes in URLs.
430
+ * Cleanup by [@XhmikosR](https://github.com/XhmikosR).
431
+
432
+ 0.8.1 / 2012-10-28
433
+ ==================
434
+
435
+ * Added better zeros processing for `rect(...)` syntax (clip property).
436
+
437
+ 0.8.0 / 2012-10-21
438
+ ==================
439
+
440
+ * Added removing URLs quotation if possible.
441
+ * Rewrote breaks processing.
442
+ * Added `keepBreaks`/`-b` option to keep line breaks in the minimized file.
443
+ * Reformatted [lib/clean.js](/lib/clean.js) so it's easier to follow the rules.
444
+ * Minimized test data is now minimized with line breaks so it's easier to
445
+ compare the changes line by line.
446
+
447
+ 0.7.0 / 2012-10-14
448
+ ==================
449
+
450
+ * Added stripping special comments to CLI (`--s0` and `--s1` options).
451
+ * Added stripping special comments to programmatic interface
452
+ (`keepSpecialComments` option).
453
+
454
+ 0.6.0 / 2012-08-05
455
+ ==================
456
+
457
+ * Full Windows support with tests (./test.bat).
458
+
459
+ 0.5.0 / 2012-08-02
460
+ ==================
461
+
462
+ * Made path to vows local.
463
+ * Explicit node.js 0.6 requirement.
464
+
465
+ 0.4.2 / 2012-06-28
466
+ ==================
467
+
468
+ * Updated binary `-v` option (version).
469
+ * Updated binary to output help when no options given (but not in piped mode).
470
+ * Added binary tests.
471
+
472
+ 0.4.1 / 2012-06-10
473
+ ==================
474
+
475
+ * Fixed stateless mode where calling `CleanCSS#process` directly was giving
476
+ errors (reported by [@facelessuser](https://github.com/facelessuser)).
477
+
478
+ 0.4.0 / 2012-06-04
479
+ ==================
480
+
481
+ * Speed improvements up to 4x thanks to the rewrite of comments and CSS' content
482
+ processing.
483
+ * Stripping empty CSS tags is now optional (see [bin/cleancss](/bin/cleancss) for details).
484
+ * Improved debugging mode (see [test/bench.js](/test/bench.js))
485
+ * Added `make bench` for a one-pass benchmark.
486
+
487
+ 0.3.3 / 2012-05-27
488
+ ==================
489
+
490
+ * Fixed tests, [package.json](/package.json) for development, and regex
491
+ for removing empty declarations (thanks to [@vvo](https://github.com/vvo)).
492
+
493
+ 0.3.2 / 2012-01-17
494
+ ==================
495
+
496
+ * Fixed output method under node.js 0.6 which incorrectly tried to close
497
+ `process.stdout`.
498
+
499
+ 0.3.1 / 2011-12-16
500
+ ==================
501
+
502
+ * Fixed cleaning up `0 0 0 0` expressions.
503
+
504
+ 0.3.0 / 2011-11-29
505
+ ==================
506
+
507
+ * Clean-css requires node.js 0.4.0+ to run.
508
+ * Removed node.js's 0.2.x 'sys' package dependency
509
+ (thanks to [@jmalonzo](https://github.com/jmalonzo) for a patch).
510
+
511
+ 0.2.6 / 2011-11-27
512
+ ==================
513
+
514
+ * Fixed expanding `+` signs in `calc()` when mixed up with adjacent `+` selector.
515
+
516
+ 0.2.5 / 2011-11-27
517
+ ==================
518
+
519
+ * Fixed issue with cleaning up spaces inside `calc`/`-moz-calc` declarations
520
+ (thanks to [@cvan](https://github.com/cvan) for reporting it).
521
+ * Fixed converting `#f00` to `red` in borders and gradients.
522
+
523
+ 0.2.4 / 2011-05-25
524
+ ==================
525
+
526
+ * Fixed problem with expanding `none` to `0` in partial/full background
527
+ declarations.
528
+ * Fixed including clean-css library from binary (global to local).
529
+
530
+ 0.2.3 / 2011-04-18
531
+ ==================
532
+
533
+ * Fixed problem with optimizing IE filters.
534
+
535
+ 0.2.2 / 2011-04-17
536
+ ==================
537
+
538
+ * Fixed problem with space before color in `border` property.
539
+
540
+ 0.2.1 / 2011-03-19
541
+ ==================
542
+
543
+ * Added stripping space before `!important` keyword.
544
+ * Updated repository location and author information in [package.json](/package.json).
545
+
546
+ 0.2.0 / 2011-03-02
547
+ ==================
548
+
549
+ * Added options parsing via optimist.
550
+ * Changed code inclusion (thus the version bump).
551
+
552
+ 0.1.0 / 2011-02-27
553
+ ==================
554
+
555
+ * First version of clean-css library.
556
+ * Implemented all basic CSS transformations.