Smartclic Storybook — Extensión VSCodeExtensión exclusiva para la arquitectura y flujo de trabajo de Smartclic. No está diseñada para uso general: depende del sistema de componentes, variables y convenciones de código propias del proyecto. Funcionalidades1. IntelliSense de componentes VueAutocompletado y documentación en archivos
La extensión carga los datos desde 2. Linter SCSS (
|
| Evento | Acción |
|---|---|
Abrir un archivo .scss |
Lint inmediato |
| Editar el archivo | Lint con 400ms de debounce |
| Guardar el archivo | Aplica automáticamente todos los fixes disponibles (F1, F3, F4, F6, F6b) |
| Bombilla (💡) sobre un error | Permite aplicar el fix de forma manual y selectiva |
3. Panel Import Map
Panel lateral (en el Explorador → Import Map) que muestra el estado de todos los micro frontends registrados en importmap.json y permite gestionar su entorno sin tocar los archivos manualmente.
Estados de un MFE
| Ícono | Color | Descripción |
|---|---|---|
✔ pass |
Verde | Corriendo — puerto activo |
⟳ sync~spin |
Amarillo | Compilando — muestra porcentaje en tiempo real (compilando... 42%) |
✖ error |
Rojo | Error de compilación |
⊘ circle-slash |
Rojo | Offline — configurado como local pero el puerto no responde |
○ radio-button-off |
Azul | Dev — apuntando al servidor remoto |
? question |
Amarillo | Personalizado — URL no coincide con local ni dev |
Botones por MFE (inline)
| Botón | Cuándo aparece | Acción |
|---|---|---|
| ⇄ | Tiene URL alternativa | Alterna entre local y dev en importmap.json |
| ▶ | Local pero offline | Lanza el servidor de desarrollo en segundo plano |
| ■ | Corriendo (gestionado o externo) | Detiene el proceso |
$(output) |
Gestionado por la extensión (compilando / running / error) | Abre el panel Output directo en el canal de ese MFE |
El botón de logs solo está disponible para procesos iniciados con ▶ desde la extensión. Si el MFE fue iniciado manualmente en otra terminal, los logs no son capturados.
Librería — Storybook
La fila de la librería (erp2-components-vue) gestiona también el servidor de Storybook (npm run storybook, puerto 6006).
| Ícono | Estado | Descripción |
|---|---|---|
✔ pass |
Verde | Storybook corriendo (gestionado o externo detectado) |
⟳ sync~spin |
Amarillo | Iniciando o deteniendo |
✖ error |
Rojo | Storybook terminó con error |
| — | — | Offline — puerto 6006 no responde |
| Botón | Cuándo aparece | Acción |
|---|---|---|
$(play-circle) |
Storybook offline | Lanza npm run storybook en segundo plano |
$(stop-circle) |
Gestionado o externo activo | Detiene el proceso; si fue iniciado fuera de VS Code usa Stop-Process (Windows) o lsof/kill (Unix) |
$(output) |
Gestionado por la extensión | Abre el canal de logs de Storybook en el panel Output |
La extensión verifica el puerto 6006 vía TCP en cada refresco del panel. Si ya está activo al presionar ▶, muestra un aviso informativo en lugar de intentar iniciarlo de nuevo.
Botones del panel (barra de título)
| Botón | Acción |
|---|---|
$(home) Todo local |
Cambia todos los MFEs a sus URLs locales |
$(cloud) Todo dev |
Cambia todos los MFEs a sus URLs de desarrollo |
$(refresh) Recargar |
Relee los tres archivos importmap |
Modo IP
El primer ítem del panel muestra localhost o la IPv4 de red del equipo. Haz clic para alternar. Útil para probar en dispositivos móviles en la misma red local.
Inicio y parada de MFEs
Al hacer clic en ▶ la extensión localiza el repositorio en el workspace y ejecuta el comando correcto:
npm run start—erp-mf-root-config,erp-mf-commonnpm run serve— resto de MFEs
El proceso corre en segundo plano. El output está disponible en el panel Output (Ctrl+Shift+U) en el canal MFE: <nombre>, o directamente usando el botón $(output) que aparece junto al ■ una vez iniciado el proceso. El ícono y el porcentaje de compilación se actualizan en tiempo real conforme webpack emite progreso.
Si VS Code se cierra y el proceso sigue activo en el puerto, la extensión lo detecta al reabrir y muestra ✔ con botón ■ para detenerlo.
Archivos que se leen
| Archivo | Propósito |
|---|---|
importmap.json |
Estado activo — el que se modifica al cambiar entorno |
importmap-local.json |
URLs locales (//localhost:xxxx/...) |
importmap-dev.json |
URLs del servidor de desarrollo remoto |
Solo se muestran entradas con nombre @sreasons/*. La extensión normaliza automáticamente los alias de clave que difieren entre archivos:
Alias en importmap-local.json |
Clave canónica |
|---|---|
@sreasons/root-config |
@sreasons/erp-mf-root-config |
@sreasons/erp-mf-comun |
@sreasons/erp-mf-common |
@sreasons/erp-mf-seguridad |
@sreasons/erp-mf-security |
4. Snippets y completions SCSS
Breakpoints
Escribe bk (o cualquier prefijo) dentro de un archivo .scss para ver las opciones disponibles:
| Prefijo | Snippet generado |
|---|---|
bk |
Tres bloques @include breakpoint(...) para LG, XL y XXL |
bklg |
@include resol.breakpoint(vars.$bp-res-lg, min) { } |
bkxl |
@include resol.breakpoint(vars.$bp-res-xl, min) { } |
bkxxl |
@include resol.breakpoint(vars.$bp-res-xxl, min) { } |
El alias (vars., resol.) se ajusta automáticamente según los @use presentes en el archivo.
Variables de color
Al escribir $ en el valor de una propiedad CSS aparecen solo las variables de color de _variables.scss. Ver sección Herramientas de color SCSS arriba.
Variables no-color
Al escribir dentro del valor de una propiedad CSS, la extensión también sugiere las variables no-color (dimensiones, espaciado, etc.) de _variables.scss:
- Por prefijo numérico: al tipear
32luego de:aparecen todas las variables cuyo valor empieza por ese número ($pix-32: 32px,$dvh-32: 32dvh, etc.). Funciona para cualquier unidad registrada. - Por nombre con
$: al escribir$pix-(o cualquier inicio de nombre de variable) dentro del valor, se filtra la lista por nombre de variable.
Las variables de color se excluyen de estas sugerencias — tienen su propio completado con swatch.
Fragmentos de snippet
Fragmentos adicionales en archivos .scss. Escribe el prefijo y presiona Tab.
5. Crear Componente
Clic derecho sobre una carpeta en el Explorador → Smartclic: Crear Componente.
Genera la estructura base de un nuevo componente siguiendo las convenciones del proyecto.
Detección automática del importmap
La extensión busca importmap-local.json en el siguiente orden:
- La propia carpeta del workspace y sus subcarpetas directas
- Las carpetas hermanas (mismo nivel que el workspace) y sus subcarpetas directas — excluye
node_modules
Esto permite que la extensión funcione correctamente aunque solo tengas abierto un MFE (ej: erp-mf-logistica): encontrará el importmap en erp-mf-root-config/src/ automáticamente.
Si no se encuentra, el panel muestra un aviso con el tooltip detallando exactamente qué rutas se buscaron.
Instalación
Instalar el archivo .vsix en VS Code:
- Abre VS Code
Ctrl+Shift+P→ Extensions: Install from VSIX...- Selecciona el archivo
.vsix - Recarga VS Code cuando lo solicite
La extensión funciona con cualquier workspace que contenga archivos .vue, .html o .scss. El panel Import Map aparece automáticamente en el Explorador si se detectan los archivos importmap.
Contexto del proyecto
- Librería de componentes:
erp2-componentes-vue - Micro frontends: proyectos que consumen la librería y a los que se aplica el linter SCSS
- Variables del proyecto:
src/assets/styles/_variables.scssen cada micro frontend - Importación estándar:
@use '@/assets/styles/variables' as vars;
@use '@/assets/styles/mixin' as resol;