如何在调试模式下让Flask-Assets每次请求时重新生成SCSS?
这是我如何为 flask-assets
设置 scss 的方法:
def configure_extensions(app):
# Web Assets
from app.extensions import assets
scss = Bundle(
'scss/all.scss',
filters='scss',
output='scss_all.css'
)
assets.register('scss_all', scss)
assets.init_app(app)
在我的配置中,我设置了 ASSETS_DEBUG = True
这样做是有效的,它会生成文件 app/static/scss_all.scss
和文件夹 app/static/.webassets.cache
。样式在网站上也能正常显示。
不过,问题是如果我想重新生成 scss 样式表,就必须手动删除上面提到的文件。这在调试 scss 时非常麻烦。
有没有办法在 app.debug
设置为 True
时,自动通过重载器重新生成这些文件呢?
(顺便说一下,我正在使用 flask 的开发版本)
2 个回答
0
Joe的回答应该被采纳。我也用类似的方法实现了:
scss = Bundle('css/main.scss',
filters='libsass',
depends='css/*',
output='gen/home%(version)s.css')
app = Flask(__name__)
assets = Environment(app)
assets.register('scss_all', scss)
所有的scss文件都放在css文件夹里。main.scss会把其他文件导入进来。现在,只要这个文件夹里的任何文件有改动,就会自动刷新。
6
这应该是可以正常工作的。不过,如果你在主文件中使用了@imports来引入其他的scss文件,那么你需要添加一个依赖选项。像这样;
mycss = Bundle(
'app.scss',
filters='pyscss,cssprefixer', depends=('/path/to/scss/files/**/*.scss'), output='generated/css/app.css')
assets.register('mycss)