Flask-LiveReload


NameFlask-LiveReload JSON
Version 0.2.1 PyPI version JSON
download
home_pageNone
SummaryLive reloading for Flask applications during development.
upload_time2025-08-23 15:48:54
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords flask livereload auto-reload development watchdog
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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:

```bash
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.

```python
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:

```python
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

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

### Opciones de Configuración de Flask

```python
# 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:

```bash
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.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "Flask-LiveReload",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "flask, livereload, auto-reload, development, watchdog",
    "author": null,
    "author_email": "Hernan Varillas <hernan.varillas93@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/f2/bc/9a34f8185c5f1aa400b144b7c0e0a51a43e6d35a71bb41bb717df9e4539a/flask_livereload-0.2.1.tar.gz",
    "platform": null,
    "description": "# Flask-LiveReload\n\nUna extensi\u00f3n de Flask que proporciona recarga en vivo de las p\u00e1ginas web cuando los archivos de plantilla o est\u00e1ticos cambian. Ideal para acelerar el desarrollo al eliminar la necesidad de recargar manualmente el navegador despu\u00e9s de cada cambio.\n\n## \ud83c\udf1f Caracter\u00edsticas\n\n- **\ud83d\udd04 Recarga autom\u00e1tica**: Monitorea los directorios `templates` y `static` en busca de cambios en los archivos.\n- **\u26a1 Integraci\u00f3n sencilla**: Se integra f\u00e1cilmente en cualquier aplicaci\u00f3n Flask.\n- **\ud83d\ude80 Ligera**: Solo depende de Flask y watchdog, sin dependencias externas pesadas.\n- **\ud83d\udce1 Eficiente**: Utiliza Server-Sent Events (SSE) para notificar al navegador de los cambios.\n- **\ud83d\udd27 Configurable**: Soporte para patrones personalizados de observaci\u00f3n e ignorar archivos.\n- **\ud83d\udee1\ufe0f Robusta**: Manejo de errores mejorado y logging detallado.\n\n## \ud83d\udce6 Instalaci\u00f3n\n\nPuedes instalar Flask-LiveReload directamente desde PyPI usando pip:\n\n```bash\npip install Flask-LiveReload\n```\n\n## \ud83d\ude80 Uso\n\n### Configuraci\u00f3n B\u00e1sica\n\nPara empezar a usar Flask-LiveReload, simplemente importa la clase `LiveReload` y p\u00e1sale tu aplicaci\u00f3n Flask.\n\n```python\nfrom flask import Flask, render_template\nfrom flask_livereload import LiveReload\n\napp = Flask(__name__)\napp.debug = True  # \u26a0\ufe0f IMPORTANTE: Solo funciona en modo debug\nlivereload = LiveReload(app)\n\n@app.route('/')\ndef index():\n    return render_template('index.html')\n\nif __name__ == '__main__':\n    app.run(debug=True)\n```\n\n### Configuraci\u00f3n Avanzada\n\nPuedes personalizar qu\u00e9 archivos observar e ignorar:\n\n```python\nfrom flask import Flask, render_template\nfrom flask_livereload import LiveReload\n\napp = Flask(__name__)\napp.debug = True\n\n# Configurar patrones personalizados\napp.config[\"LIVERELOAD_WATCH_PATTERNS\"] = [\n    \"statics/**/*.html\",\n    \"statics/**/*.js\",\n    \"statics/**/*.css\",\n    \"templates/**/*.html\",\n]\n\napp.config[\"LIVERELOAD_IGNORE_PATTERNS\"] = [\n    \"__pycache__\",\n    \".venv\",\n    \".git\",\n    \".pytest_cache\",\n    \"*.pyc\",\n    \"*.pyo\",\n    \"*.log\",\n    \".DS_Store\",\n    \"node_modules\",\n]\n\nlivereload = LiveReload(app)\n\n@app.route('/')\ndef index():\n    return render_template('index.html')\n\nif __name__ == '__main__':\n    app.run(debug=True)\n```\n\n## \ud83e\udde0 \u00bfC\u00f3mo funciona?\n\nFlask-LiveReload inyecta un peque\u00f1o script de JavaScript en tus p\u00e1ginas 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\u00eda un mensaje al navegador a trav\u00e9s del SSE, lo que provoca que la p\u00e1gina se recargue.\n\n## \u2699\ufe0f Configuraci\u00f3n\n\n### Variables de Entorno\n\n```bash\n# Nivel de logging (DEBUG, INFO, WARNING, ERROR)\nexport LOG_LEVEL=INFO\n```\n\n### Opciones de Configuraci\u00f3n de Flask\n\n```python\n# Patrones de archivos a observar (opcional)\napp.config[\"LIVERELOAD_WATCH_PATTERNS\"] = [\n    \"statics/**/*.html\",    # Todos los HTML en statics y subdirectorios\n    \"statics/**/*.js\",      # Todos los JS en statics y subdirectorios\n    \"templates/**/*.html\",  # Todos los HTML en templates y subdirectorios\n]\n\n# Patrones de archivos a ignorar (opcional)\napp.config[\"LIVERELOAD_IGNORE_PATTERNS\"] = [\n    \"__pycache__\",\n    \".venv\",\n    \".git\",\n    \"*.pyc\",\n    \"node_modules\",\n]\n```\n\n## \ud83d\udc1b Soluci\u00f3n de Problemas\n\n### Problemas Comunes\n\n1. **No se recarga autom\u00e1ticamente**: \n   - Verifica que `app.debug = True`\n   - Revisa los logs para errores\n   - Aseg\u00farate de que los archivos est\u00e9n en los directorios correctos\n\n2. **Error de importaci\u00f3n**:\n   - Verifica que el paquete est\u00e9 instalado correctamente\n   - Aseg\u00farate de usar el token correcto si es un repositorio privado\n\n3. **Problemas con patrones**:\n   - Los patrones usan sintaxis glob\n   - Usa `./` para rutas relativas al directorio de la aplicaci\u00f3n\n\n### Logging\n\nHabilita logging detallado para debugging:\n\n```bash\nexport LOG_LEVEL=DEBUG\n```\n\n## \ud83d\udcda Documentaci\u00f3n Adicional\n\nPara ejemplos m\u00e1s detallados y gu\u00edas de uso, consulta:\n- `examples/README.md` - Gu\u00eda completa de uso\n- `examples/local_development_guide.md` - Desarrollo local\n- `examples/standalone_example.py` - Ejemplo b\u00e1sico\n- `examples/custom_watch_patterns_example.py` - Ejemplo con patrones personalizados\n\n## \ud83e\udd1d Contribuciones\n\nLas contribuciones son bienvenidas. Si tienes alguna idea, sugerencia o informe de error, por favor abre un issue o env\u00eda un pull request.\n\n## \ud83d\udcc4 Licencia\n\nEste proyecto est\u00e1 bajo la licencia MIT. Consulta el archivo `LICENSE` para m\u00e1s detalles.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Live reloading for Flask applications during development.",
    "version": "0.2.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/hvarillas/flask-livereload/issues",
        "Homepage": "https://github.com/hvarillas/flask-livereload"
    },
    "split_keywords": [
        "flask",
        " livereload",
        " auto-reload",
        " development",
        " watchdog"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d92ea550be54454af9c594af9506b6defe904b88d27f5b811994ed198ce3cf4c",
                "md5": "f20deb676e18ee9a895c07486649b3ce",
                "sha256": "3c3df3a23cb1d5c6f1428f09458e9a489e213a49dec51f46c56758a7584cb1ff"
            },
            "downloads": -1,
            "filename": "flask_livereload-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f20deb676e18ee9a895c07486649b3ce",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 7034,
            "upload_time": "2025-08-23T15:48:52",
            "upload_time_iso_8601": "2025-08-23T15:48:52.853726Z",
            "url": "https://files.pythonhosted.org/packages/d9/2e/a550be54454af9c594af9506b6defe904b88d27f5b811994ed198ce3cf4c/flask_livereload-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f2bc9a34f8185c5f1aa400b144b7c0e0a51a43e6d35a71bb41bb717df9e4539a",
                "md5": "bed753fefa4152d9643f9fb7e4726d0b",
                "sha256": "d169c2c7181b5146a40b3d34a05f7250a9a813ab394cca4b480d3959e0c7efcf"
            },
            "downloads": -1,
            "filename": "flask_livereload-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "bed753fefa4152d9643f9fb7e4726d0b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 7648,
            "upload_time": "2025-08-23T15:48:54",
            "upload_time_iso_8601": "2025-08-23T15:48:54.413166Z",
            "url": "https://files.pythonhosted.org/packages/f2/bc/9a34f8185c5f1aa400b144b7c0e0a51a43e6d35a71bb41bb717df9e4539a/flask_livereload-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-23 15:48:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hvarillas",
    "github_project": "flask-livereload",
    "github_not_found": true,
    "lcname": "flask-livereload"
}
        
Elapsed time: 1.56225s