我正在使用webassets在我的Flask应用中使用Flask-Assets,而我在创建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.less
或custom.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
)所做的更改。从本质上讲,最后一项是我的问题的“解决方案”,但我不知道为什么它的工作方式如此,所以它并不适合我。任何人都可以在这里向正确的方向提供解释或推动吗?
谢谢!
答案 0 :(得分:3)
这里的问题是**
模块不支持递归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"
)
答案 1 :(得分:3)
我通过安装glob2模块解决了这个问题。我的depends='**/*.scss'
然后按照我的预期开始工作,观察嵌套目录和顶层的变化。