在烧瓶中编写自定义过滤器(WebAssets)



在文档之后,我为CSS压缩机编写了自己的自定义过滤器,将烧瓶与烧瓶 - 收藏器(来自WebAssets((来自WebAssets(。它似乎不起作用:

from csscompressor import compress
from flask_assets import Bundle
from webassets.filter import Filter, register_filter
class NoopFilter(Filter):
    name = 'csscompressor'
    print("noopfilter")
    def output(self, _in, out, **kwargs):
        print("output")
    def input(self, _in, out, **kwargs):
        print("input")
register_filter(NoopFilter)
bundles = {
    'home_css': Bundle(
        'css/main.css',
        'css/forms.css',
        output='gen/home.css',
        filters='csscompressor'
    )

该类在启动时两次称为,并且该过滤器是由其名称找到的,但是input()output()似乎从未被调用。CSS文件是创建的,但显然没有任何压缩。有人对此有经验吗?

显然,这是一个缓存问题。更改过滤器名称使其正常工作。希望这有助于某人将头发拉到几kB上。

使用CSSCompressor软件包(PIP install csscompressor(

压缩CSS的示例
from csscompressor import compress
from flask_assets import Bundle
from webassets.filter import Filter, register_filter
class NoopFilter(Filter):
    name = 'css_compress'
    def output(self, _in, out, **kwargs):
        css = compress(_in.read())
        out.write(css)
    def input(self, _in, out, **kwargs):
        css = compress(_in.read())
        out.write(css)

register_filter(NoopFilter)

bundles = {
    'app_css': Bundle(
        'css/responsive.css',
        'css/ads.css',
         filters='css_compress',
         output='all/app.css'
    ),

最新更新