CSS compilers¶
CSS compilers intend to improve upon the default CSS syntax, allow you to write your stylesheets in a syntax more powerful, or more easily readable. Since browsers do not understand this new syntax, the CSS compiler needs to translate its own syntax to original CSS.
webassets
includes builtin filters for a number of popular
CSS compilers, which you can use like any other
filter. There is one problem though: While developing, you will probably
want to disable asset packaging, and instead work with the uncompressed
assets (i.e., you would disable the
environment.debug option). However,
you still need to apply the filter for your CSS compiler, since otherwise,
the Browser wouldn’t understand your stylesheets.
For this reason, such compiler filters run even when in debug mode:
less = Bundle('css/base.less', 'css/forms.less',
filters='less,cssmin', output='screen.css')
The above code block behaves exactly like you would want it to: When debugging, the less files are compiled to CSS, but the code is not minified. In production, both filters are applied.
Sometimes, you need to merge together good old CSS code, and you have a
compiler that, unlike less
, cannot process those. Then you can use a
child bundle:
sass = Bundle('*.sass', filters='sass', output='gen/sass.css')
all_css = Bundle('css/jquery.calendar.css', sass,
filters='cssmin', output="gen/all.css")
In the above case, the sass
filter is only applied to the Sass source
files, within a nested bundle (which needs it’s own output target!). The
minification is applied to all CSS content in the outer bundle.