Skip to main content

Live reloading for Flask applications during development.

Project description

Flask-LiveReload

Una extensión de Flask que proporciona recarga en vivo de las páginas web cuando los archivos de plantilla o estáticos cambian. Ideal para acelerar el desarrollo al eliminar la necesidad de recargar manualmente el navegador después de cada cambio.

🌟 Características

  • 🔄 Recarga automática: Monitorea los directorios templates y static en busca de cambios en los archivos.
  • ⚡ Integración sencilla: Se integra fácilmente en cualquier aplicación Flask.
  • 🚀 Ligera: Solo depende de Flask y watchdog, sin dependencias externas pesadas.
  • 📡 Eficiente: Utiliza Server-Sent Events (SSE) para notificar al navegador de los cambios.
  • 🔧 Configurable: Soporte para patrones personalizados de observación e ignorar archivos.
  • 🛡️ Robusta: Manejo de errores mejorado y logging detallado.

📦 Instalación

Puedes instalar Flask-LiveReload directamente desde PyPI usando pip:

pip install Flask-LiveReload

🚀 Uso

Configuración Básica

Para empezar a usar Flask-LiveReload, simplemente importa la clase LiveReload y pásale tu aplicación Flask.

from flask import Flask, render_template
from flask_livereload import LiveReload

app = Flask(__name__)
app.debug = True  # ⚠️ IMPORTANTE: Solo funciona en modo debug
livereload = LiveReload(app)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

Configuración Avanzada

Puedes personalizar qué archivos observar e ignorar:

from flask import Flask, render_template
from flask_livereload import LiveReload

app = Flask(__name__)
app.debug = True

# Configurar patrones personalizados
app.config["LIVERELOAD_WATCH_PATTERNS"] = [
    "statics/**/*.html",
    "statics/**/*.js",
    "statics/**/*.css",
    "templates/**/*.html",
]

app.config["LIVERELOAD_IGNORE_PATTERNS"] = [
    "__pycache__",
    ".venv",
    ".git",
    ".pytest_cache",
    "*.pyc",
    "*.pyo",
    "*.log",
    ".DS_Store",
    "node_modules",
]

livereload = LiveReload(app)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

🧠 ¿Cómo funciona?

Flask-LiveReload inyecta un pequeño script de JavaScript en tus páginas HTML. Este script se conecta a un endpoint de Server-Sent Events (SSE) en /_livereload. En el lado del servidor, un observador de archivos monitorea los directorios configurados. Cuando se detecta un cambio, se envía un mensaje al navegador a través del SSE, lo que provoca que la página se recargue.

⚙️ Configuración

Variables de Entorno

# Nivel de logging (DEBUG, INFO, WARNING, ERROR)
export LOG_LEVEL=INFO

Opciones de Configuración de Flask

# Patrones de archivos a observar (opcional)
app.config["LIVERELOAD_WATCH_PATTERNS"] = [
    "statics/**/*.html",    # Todos los HTML en statics y subdirectorios
    "statics/**/*.js",      # Todos los JS en statics y subdirectorios
    "templates/**/*.html",  # Todos los HTML en templates y subdirectorios
]

# Patrones de archivos a ignorar (opcional)
app.config["LIVERELOAD_IGNORE_PATTERNS"] = [
    "__pycache__",
    ".venv",
    ".git",
    "*.pyc",
    "node_modules",
]

🐛 Solución de Problemas

Problemas Comunes

  1. No se recarga automáticamente:

    • Verifica que app.debug = True
    • Revisa los logs para errores
    • Asegúrate de que los archivos estén en los directorios correctos
  2. Error de importación:

    • Verifica que el paquete esté instalado correctamente
    • Asegúrate de usar el token correcto si es un repositorio privado
  3. Problemas con patrones:

    • Los patrones usan sintaxis glob
    • Usa ./ para rutas relativas al directorio de la aplicación

Logging

Habilita logging detallado para debugging:

export LOG_LEVEL=DEBUG

📚 Documentación Adicional

Para ejemplos más detallados y guías de uso, consulta:

  • examples/README.md - Guía completa de uso
  • examples/local_development_guide.md - Desarrollo local
  • examples/standalone_example.py - Ejemplo básico
  • examples/custom_watch_patterns_example.py - Ejemplo con patrones personalizados

🤝 Contribuciones

Las contribuciones son bienvenidas. Si tienes alguna idea, sugerencia o informe de error, por favor abre un issue o envía un pull request.

📄 Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask_livereload-0.2.2.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flask_livereload-0.2.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file flask_livereload-0.2.2.tar.gz.

File metadata

  • Download URL: flask_livereload-0.2.2.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flask_livereload-0.2.2.tar.gz
Algorithm Hash digest
SHA256 ed60f6932e5ccd3a73aa7ce6ba326aaf3c7a7265a0cbda14c356efa5068d1f53
MD5 be923dc37175ee8401269d757502b343
BLAKE2b-256 1429fb149930f99c8e6589e17757294503cfc1c12c706a809e5821fc9009023c

See more details on using hashes here.

File details

Details for the file flask_livereload-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_livereload-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9dfa258f407c269f28b156b81417a43c53c03d393dd60cfc99d7fa07808ace1c
MD5 cd56de0b6ef5809f3baf5c93a0251aa5
BLAKE2b-256 75f6bca202b6e9d9e8df62962014b1c0fc231238afe06b255956e288c2632d1c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page