python - webassets 为 python 烧瓶应用程序重建 scss 后如何删除旧的 css 文件?
问题描述
我有一个使用 flask_assets 库的 Python 3.9 烧瓶应用程序。
我的烧瓶初始化.py 文件如下所示:
import logging
import os
from flask import Flask, request, current_app
from config import Config
from flask_assets import Environment
from app.utils.assets import bundles
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
assets = Environment(app)
assets.debug = True
assets.versions = 'timestamp'
# assets.cache = False
from app.main import bp as main_bp
app.register_blueprint(main_bp)
assets.register(bundles)
if not app.debug and not app.testing:
app.logger.setLevel(logging.INFO)
app.logger.info('Application starting.')
return app
由于 flask_assets 是建立在 webassets 之上的,所以我导入了 Environment 和我创建的一个 css Bundle,它将我的 scss 代码编译为 css。
这是我的 Bundle 的样子:
from flask_assets import Bundle
bundles = {
'css': Bundle (
'scss/_main.scss',
'scss/_base.scss',
'scss/_typography.scss',
'scss/_page_home.scss',
'scss/_page_technote.scss',
filters='pyscss',
depends=('**/*.scss'),
output='css/style.%(version)s.scss.css'
)
}
我遇到的问题:
每次我对我的 scss 文件进行更改时,css 都会使用新版本成功重建以进行缓存破坏。但是,旧的 css 文件仍然存在。
每次重建发生时删除它们的最佳自动方法是什么?有什么理由保留旧文件吗?
另外 - 附带问题 - Bundle 对象是否可以自动考虑目录中特定类型的所有文件?而不是我单独列出每个文件?
这是我的文件的样子:
谢谢!
解决方案
您可以使用rmtree
. 尽管我相信存在更好的方法,但它确实做到了。
from os.path import join
from shutil import rmtree
app = Flask(__name__)
rmtree(join(app.static_folder, 'css'), ignore_errors=True)
您可以通过按日期检查文件元数据或类似方法来改进这一点,而不是删除未更改的元数据。
推荐阅读
- typescript - 使用 infer 和 typeof 在 Typescript 中创建工厂
- python - 如何修复我的 python kivy 文件夹监控应用程序崩溃
- python - 避免 x 既不增加也不减少:{}.".format(x) 计算 auc 分数时
- ios - Flutter,如何在添加到List之前确定适配器是否包含字符串
- c++ - 尝试调试时抛出 C++ 异常
- html - 在 div 中插入图标 --- 有没有聪明的方法?
- javascript - Firebase返回的值不在ejs中呈现
- node.js - 为什么我无法从 hasura 访问我机器的端口?
- cordova - 使用 cordova-plugin-ble-central 连接 BLE 而无需扫描
- mongoose - 尚未为模型“ModuleSchema”注册架构