Support for yUglify

This commit is contained in:
Chris Kief
2013-11-16 13:28:44 -05:00
committed by Jannis Leidel
parent 77268dd20a
commit de7febcb4f
4 changed files with 59 additions and 3 deletions

View File

@@ -45,9 +45,10 @@ html5lib_ based parser, as well as an abstract base class that makes it easy to
write a custom parser.
Django Compressor also comes with built-in support for `CSS Tidy`_,
`YUI CSS and JS`_ compressor, the Google's `Closure Compiler`_, a Python
port of Douglas Crockford's JSmin_, a Python port of the YUI CSS Compressor
cssmin_ and a filter to convert (some) images into `data URIs`_.
`YUI CSS and JS`_ compressor, `yUglify CSS and JS`_ compressor, the Google's
`Closure Compiler`_, a Python port of Douglas Crockford's JSmin_, a Python port
of the YUI CSS Compressor cssmin_ and a filter to convert (some) images into
`data URIs`_.
If your setup requires a different compressor or other post-processing
tool it will be fairly easy to implement a custom filter. Simply extend
@@ -67,6 +68,7 @@ The `in-development version`_ of Django Compressor can be installed with
.. _html5lib: http://code.google.com/p/html5lib/
.. _CSS Tidy: http://csstidy.sourceforge.net/
.. _YUI CSS and JS: http://developer.yahoo.com/yui/compressor/
.. _yUglify CSS and JS: https://github.com/yui/yuglify
.. _Closure Compiler: http://code.google.com/closure/compiler/
.. _JSMin: http://www.crockford.com/javascript/jsmin.html
.. _cssmin: https://github.com/zacharyvoase/cssmin

View File

@@ -42,6 +42,9 @@ class CompressorConf(AppConf):
YUI_BINARY = 'java -jar yuicompressor.jar'
YUI_CSS_ARGUMENTS = ''
YUI_JS_ARGUMENTS = ''
YUGLIFY_BINARY = 'yuglify'
YUGLIFY_CSS_ARGUMENTS = '--terminal'
YUGLIFY_JS_ARGUMENTS = '--terminal'
DATA_URI_MAX_SIZE = 1024
# the cache backend to use

View File

@@ -0,0 +1,26 @@
from compressor.conf import settings
from compressor.filters import CompilerFilter
class YUglifyFilter(CompilerFilter):
command = "{binary} {args}"
def __init__(self, *args, **kwargs):
super(YUglifyFilter, self).__init__(*args, **kwargs)
self.command += ' --type=%s' % self.type
class YUglifyCSSFilter(YUglifyFilter):
type = 'css'
options = (
("binary", settings.COMPRESS_YUGLIFY_BINARY),
("args", settings.COMPRESS_YUGLIFY_CSS_ARGUMENTS),
)
class YUglifyJSFilter(YUglifyFilter):
type = 'js'
options = (
("binary", settings.COMPRESS_YUGLIFY_BINARY),
("args", settings.COMPRESS_YUGLIFY_JS_ARGUMENTS),
)

View File

@@ -119,6 +119,18 @@ Backend settings
The arguments passed to the compressor.
- ``compressor.filters.yuglify.YUglifyCSSFilter``
A filter that passes the CSS content to the `yUglify compressor`_.
.. attribute:: COMPRESS_YUGLIFY_BINARY
The yUglify compressor filesystem path.
.. attribute:: COMPRESS_YUGLIFY_CSS_ARGUMENTS
The arguments passed to the compressor. Defaults to --terminal.
- ``compressor.filters.cssmin.CSSMinFilter``
A filter that uses Zachary Voase's Python port of the YUI CSS compression
@@ -184,6 +196,18 @@ Backend settings
The arguments passed to the compressor.
- ``compressor.filters.yuglify.YUglifyJSFilter``
A filter that passes the JavaScript code to the `yUglify compressor`_.
.. attribute:: COMPRESS_YUGLIFY_BINARY
The yUglify compressor filesystem path.
.. attribute:: COMPRESS_YUGLIFY_JS_ARGUMENTS
The arguments passed to the compressor.
- ``compressor.filters.template.TemplateFilter``
A filter that renders the JavaScript code with Django templating system.
@@ -195,6 +219,7 @@ Backend settings
.. _rJSmin: http://opensource.perlig.de/rjsmin/
.. _`Google Closure compiler`: http://code.google.com/closure/compiler/
.. _`YUI compressor`: http://developer.yahoo.com/yui/compressor/
.. _`yUglify compressor`: https://github.com/yui/yuglify
.. _`Slim It`: http://slimit.org/
.. attribute:: COMPRESS_PRECOMPILERS