Validador
Jx incluye una herramienta de línea de comandos para validar tus componentes. Esto ayuda a detectar errores temprano y puede ser especialmente útil en pipelines de CI.
Apunta el verificador a tu instancia de catálogo usando su ruta de importación de Python. El formato es module.path:attribute — el módulo se importa y el atributo se usa como la instancia de Catalog.
$ jx check myapp.setup:catalog
También puedes usar path/to/file.py:attribute — el archivo se importa y el atributo se usa como la instancia de Catalog.
$ jx check docs/docs.py:catalog
Qué verifica
El comando check va más allá de la validación que hace el catálogo al cargar componentes:
- Validación entre componentes — verifica que las rutas de importación (por ejemplo
{#import "buton.jx" ...}) realmente resuelvan a componentes del catálogo. El catálogo solo verifica que las importaciones existan en el momento del renderizado. - Detección de etiquetas no importadas — encuentra etiquetas en PascalCase como
<Button />que no están importadas pero existen en el catálogo ("usado pero no importado"). - Sugerencias — "¿quisiste decir 'button.jx'?" / "¿quisiste decir 'Button'?" para errores tipográficos.
- Recolecta todos los errores — check reporta cada problema en cada componente.
- Salida JSON estructurada — para integración con IDE (la extensión de VS Code la usa).
Formatos de salida
Texto (por defecto)
$ jx check myapp.setup:catalog
✓ button.jx - OK
✓ card.jx - OK
✗ page.jx:12 - Component 'Buton' used but not imported (did you mean 'Button'?)
✗ modal.jx - Unknown import 'dialog.jx' (did you mean 'dialogs/dialog.jx'?)
4 components checked, 2 errors
JSON
$ jx check --format json myapp.setup:catalog
{
"checked": 4,
"errors": [
{
"file": "page.jx",
"abs_path": "/path/to/components/page.jx",
"line": 12,
"message": "Component 'Buton' used but not imported",
"suggestion": "Button"
},
{
"file": "modal.jx",
"abs_path": "/path/to/components/modal.jx",
"line": null,
"message": "Unknown import 'dialog.jx'",
"suggestion": "dialogs/dialog.jx"
}
]
}
La salida JSON es útil para integrar con editores, linters o herramientas personalizadas.
Uso programático
También puedes usar el verificador desde código Python:
from jx import Catalog
from jx.tools import check, check_all
catalog = Catalog("components/")
# Obtén errores estructurados
errors, checked = check_all(catalog)
for error in errors:
print(f"{error.file}:{error.line} - {error.message}")
# O ejecutar la verificación completa con salida formateada (devuelve el código de salida)
exit_code = check(catalog, format="text")