Configuration¶
Quart-Assets can be configured through Quart's configuration system. All
configuration keys are prefixed with ASSETS_.
Basic Configuration¶
Debug Mode¶
Control whether assets are served individually or as bundles:
app.config['ASSETS_DEBUG'] = False # Default: serve bundles
app.config['ASSETS_DEBUG'] = True # Development: serve individual files
Auto Build¶
Control when assets are automatically rebuilt:
app.config['ASSETS_AUTO_BUILD'] = True # Default: auto-rebuild when needed
app.config['ASSETS_AUTO_BUILD'] = False # Manual building only
Cache Directory¶
Set where compiled assets are stored:
app.config['ASSETS_CACHE'] = '/tmp/assets-cache' # Custom cache directory
URL Generation¶
Configure how asset URLs are generated:
app.config['ASSETS_URL'] = '/static' # Base URL for assets
app.config['ASSETS_URL_EXPIRE'] = True # Add timestamps to URLs
Directory Configuration¶
Custom Directories¶
Override the default static directory:
from quart_assets import QuartAssets
app = Quart(__name__)
assets = QuartAssets(app)
# Set custom directories
assets.directory = '/path/to/assets'
assets.url = '/assets'
Load Path¶
Add additional directories to search for source files:
assets.append_path('/path/to/vendor/assets')
assets.append_path('/path/to/shared/assets', '/shared-assets')
Environment-Based Configuration¶
Development Settings¶
class DevelopmentConfig:
ASSETS_DEBUG = True
ASSETS_AUTO_BUILD = True
ASSETS_CACHE = False # Disable caching for development
Production Settings¶
class ProductionConfig:
ASSETS_DEBUG = False
ASSETS_AUTO_BUILD = True
ASSETS_CACHE = True
ASSETS_URL_EXPIRE = True # Cache busting
Testing Settings¶
class TestingConfig:
ASSETS_DEBUG = True
ASSETS_AUTO_BUILD = False # Manual control in tests
ASSETS_CACHE = False
Blueprint Configuration¶
When using blueprints, assets can reference blueprint-specific directories:
from quart import Blueprint
# Create blueprint with static folder
admin_bp = Blueprint('admin', __name__,
static_folder='static',
static_url_path='/admin/static')
# Register blueprint-specific assets
admin_css = Bundle('admin/styles.css', output='admin/admin.min.css')
assets.register('admin_css', admin_css)
Advanced Configuration¶
Custom Resolvers¶
For complex directory structures, you can customize how files are resolved:
from quart_assets import QuartAssets
class CustomResolver(QuartResolver):
def resolve_source_to_url(self, ctx, filepath, item):
# Custom URL resolution logic
return super().resolve_source_to_url(ctx, filepath, item)
assets = QuartAssets()
assets.resolver_class = CustomResolver
Configuration Storage¶
Customize how configuration is stored and accessed:
from quart_assets.extension import QuartConfigStorage
class CustomConfigStorage(QuartConfigStorage):
def __getitem__(self, key):
# Custom configuration logic
return super().__getitem__(key)
assets.config_storage_class = CustomConfigStorage
YAML Configuration¶
You can also define bundles in YAML files:
# assets.yml
css_bundle:
filters: cssmin
output: dist/all.min.css
contents:
- css/main.css
- css/utils.css
js_bundle:
filters: jsmin
output: dist/all.min.js
contents:
- js/main.js
- js/utils.js
Load the YAML configuration:
assets.from_yaml('assets.yml')
Python Module Configuration¶
Define bundles in a Python module:
# assets_config.py
from quart_assets import Bundle
bundles = {
'css_all': Bundle(
'css/main.css',
'css/utils.css',
filters='cssmin',
output='dist/all.min.css'
),
'js_all': Bundle(
'js/main.js',
filters='jsmin',
output='dist/all.min.js'
)
}
Load the module configuration:
assets.from_module('assets_config')
Configuration Reference¶
| Setting | Default | Description |
|---|---|---|
ASSETS_DEBUG |
False |
Serve individual files instead of bundles |
ASSETS_AUTO_BUILD |
True |
Automatically rebuild assets when needed |
ASSETS_CACHE |
True |
Enable asset caching |
ASSETS_URL_EXPIRE |
True |
Add timestamps to URLs for cache busting |
ASSETS_DIRECTORY |
app.static_folder |
Directory where assets are stored |
ASSETS_URL |
app.static_url_path |
Base URL for serving assets |
ASSETS_LOAD_PATH |
[] |
Additional directories to search for source files |
Next Steps¶
- CLI Commands - Learn about command-line tools
- API Reference - Detailed API documentation
- Examples - See configuration in action