首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在flask-assets (webassets)中编写自定义过滤器

在flask-assets (webassets)中编写自定义过滤器
EN

Stack Overflow用户
提问于 2019-07-27 06:47:02
回答 2查看 143关注 0票数 1

使用Flask和flask-assets (来自webassets),我为css压缩器following the documentation编写了自己的自定义过滤器。它似乎不起作用:

代码语言:javascript
复制
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文件被创建,但显然没有任何压缩。有没有人有这方面的经验?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-27 07:01:41

显然,这是一个缓存问题。更改筛选器名称可使其正常工作。希望这能帮助一些人在一些kB上拔出他们的头发。

票数 0
EN

Stack Overflow用户

发布于 2020-12-08 05:06:26

使用CSS压缩器包压缩CSS的示例(pip install CSS压缩器)

代码语言:javascript
复制
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'
    ),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57227776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档