Dev Tools / VS Code

Color Highlight v2

Escaneo con debounce de 150 ms y build con esbuild: 38 KB y 2 dependencias

TypeScript
esbuild
pnpm
VS Code

Métricas clave

Métricas y topología del sistema

del artefacto compilado de la extensión
0 KB
del artefacto compilado de la extensión
de debounce añadido: el original relanzaba el escaneo completo en cada tecla
0 ms
de debounce añadido: el original relanzaba el escaneo completo en cada tecla
dependencias en runtime, de 4 en el original a 2 en el fork
0
dependencias en runtime, de 4 en el original a 2 en el fork
estrategias de detección de color en 6 formatos: SCSS, LESS, CSS vars, Hex/RGB, HSL y HWB
0
estrategias de detección de color en 6 formatos: SCSS, LESS, CSS vars, Hex/RGB, HSL y HWB
Mockup de Color Highlight v2: logo, eslogan y una ventana de VS Code resaltando colores en CSS y SCSS

Resumen

Fork modernizado de `vscode-ext-color-highlight` (GPL-3.0), la extensión que resalta los colores directamente en el editor. El original relanzaba un escaneo completo en cada tecla: añadí un debounce de 150 ms que elimina ese cuello de botella. También sustituí su cadena de build (webpack + babel + npm) por esbuild + pnpm, dejando el artefacto en 38 KB y las dependencias en runtime de 4 a 2, y migré el núcleo a TypeScript. Fork bajo GPL-3.0, con crédito explícito a los autores originales.

Problema

La extensión original resolvía un problema real — ver los colores del código directamente en el editor — pero su base había envejecido: relanzaba un escaneo completo en cada tecla, su build pasaba por webpack y babel con cuatro dependencias en runtime, y el núcleo no estaba tipado. Modernizarla la hace mantenible y ligera sin abandonar la licencia ni el crédito de sus autores.

Mi rol

  • Sustituí la cadena de build (webpack + babel + npm) por esbuild + pnpm: el artefacto compilado quedó en 38 KB y las dependencias en runtime bajaron de 4 a 2.
  • Añadí un debounce de 150 ms al motor de resaltado, que antes relanzaba el escaneo completo con cada tecla; el motivo está documentado en el código.
  • Migré el núcleo a TypeScript (motor de resaltado, mapa de decoraciones, contraste e importer de Sass) y añadí un script `check-types` al pipeline.
  • Reescribí el mapa de decoraciones con ciclo de vida y liberación explícita, corrigiendo las fugas de memoria de decoraciones.
  • Mantuve la licencia GPL-3.0 y el crédito a los autores originales: el proyecto se presenta como fork modernizado, nunca como invención propia.

Solución

  • Debounce de 150 ms: el motor deja de relanzar el escaneo completo en cada tecla, que es de donde venía el atasco al escribir.
  • Build con esbuild: sustituye a webpack + babel, sin transpilación intermedia ni esa cadena de toolchain.
  • 38 KB y 2 dependencias: el paquete se empaqueta con `--no-dependencies`, así que instala en VS Code, Cursor, Windsurf, VSCodium y Antigravity sin arrastrar nada.
  • Núcleo en TypeScript: motor, mapa de decoraciones, contraste e importer de Sass con tipado, verificados en cada build con `check-types`.

¿Tu editor se atasca al escribir y quieres una extensión que no pese? Hablemos.

Volver a proyectos