【问题标题】:Using "depends" in webassets bundles在 webassets 包中使用“depends”
【发布时间】:2013-08-13 14:41:19
【问题描述】:

我在使用Flask-Assets 的Flask 应用程序中使用webassets,但在创建bundles 时遇到depends 选项问题。

在我的例子中,我从以下目录结构中捆绑 LESS 文件:

/static
 \_ /css
     \_ /bootstrap
     |   \_ bootstrap.less // This file @imports variables.less and custom.less
     |   \_ variables.less
     \_ custom.less

我的捆绑包如下所示:

css = Bundle(
    "css/bootstrap/bootstrap.less",
    filters="less, cssmin",
    output="dist/base.css",
    depends="**/*.less"
)

使用这些设置,只要更改了 bootstrap.lesscustom.less 而不是 variables.less,就会重建 LESS 文件。

据我了解,depends 选项使用的表达式是 glob 指令,使用上面的指令应该简单地递归遍历所有目录并获取任何 LESS 文件。但是,它似乎从未注意到对 variables.less 所做的任何更改。

在尝试解决此问题时,我为depends 尝试了以下选项:

  • "*.less" - 什么都没有(因为它在项目目录的根目录中搜索,我相信那里没有 LESS 文件)
  • "**/*.less, myproject/static/css/bootstrap/variables.less" - 根本不接受任何文件中的任何更改。
  • "**/*.less, myproject/static/css/bootstrap/variables.less" - 同上。
  • "myproject/static/css/bootstrap/variables.less" - 奇怪的是,这会影响到对 variables.less 和任何其他 LESS 文件(例如 custom.less)所做的更改。

本质上,最后一项是我的问题的“解决方案”,但我不知道为什么它会这样工作,所以它不适合我。任何人都可以在这里提供解释或推动正确的方向吗?

谢谢!

【问题讨论】:

    标签: flask glob webassets


    【解决方案1】:

    这里的问题是 glob 模块不支持递归 glob **(但是;请参阅 issue 13968)。

    这是我在我的一个项目中的设置方式(不确定这是否适合您的需求):

    less/
    ├── bootstrap/
    │   ├── bootstrap.less
    │   ├── variables.less
    │   └── ...
    └── style.less        # @import "bootstrap/bootstrap.less";
    

    捆绑配置:

    css = Bundle(
        "less/style.less",
        filters="less, cssmin",
        output="css/all.css",
        depends="less/bootstrap/*.less"
    )
    

    【讨论】:

    • 在 Python 2.7 上通过 pathlib 支持。
    【解决方案2】:

    我通过安装 glob2 模块解决了这个问题。我的depends='**/*.scss' 然后开始按我的预期工作,观察嵌套目录和顶层目录的变化。

    【讨论】:

    • 效果很好。谢谢!
    • 哇,你真的让我的一天变得更好了 100%!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 2018-05-17
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多