El empaquetado de bibliotecas es un tema interesante porque Vite actualmente se envía con un modo de biblioteca Vite, que no muchas personas realmente usan porque hemos estado un poco retenidos en invertir en el comando debido a que el empaquetado de bibliotecas es en realidad un tema bastante complicado en sí mismo. El comportamiento es bastante diferente al empaquetado de aplicaciones. Por eso necesita un comando o un modo dedicado para manejarlo. Así que recientemente comenzamos, recientemente movimos TS-down, un proyecto de Kevin Den, al alcance de Voice Zero y la organización Rodown. Así que TS-down es ahora el empaquetador de bibliotecas oficial basado en Rodown y también es el sucesor de TS-up, que es un empaquetador de bibliotecas muy popular, que ahora ya no se mantiene activamente.
Así que lo interesante que hace TS-down es que viene con generación y empaquetado de TypeScript DTS incorporados. Así que hay dos cosas importantes aquí. Una es que puedes habilitar declaraciones aisladas en tu configuración de TS para permitir que OXC genere tus archivos DTS individuales sin pasar por TSC. Esto hace que el proceso de generación de DTS sea una transformación puramente sintáctica, que es órdenes de magnitud más rápida que generarlo a través de TSC. La segunda es que también implementamos y enviamos un plugin llamado Rodown Plugin DTS que utiliza algunas técnicas personalizadas para poder empaquetar tu DTS en un solo archivo, de modo que no solo reduce el tamaño de distribución de tu paquete sino que también permite que el consumidor de tu paquete pueda verificar los tipos de tu biblioteca más rápido porque TypeScript funciona mejor cuando tiene menos archivos con los que trabajar. Así que también maneja muchas convenciones como múltiples formatos de salida, condiciones de exportación, corrección de manifiesto de parches, linting, etc. Y esto se integrará en VitePlus como su modo de biblioteca.
Un poco sobre pruebas, ¿verdad? Así que ViteTest va a ser esencialmente el comando de prueba de Vite en VitePlus. ViteTest ahora es probablemente el corredor de pruebas de JavaScript más completo en características. Inicialmente, ViteTest nació como una especie de réplica de Jest con la misma API, pero diseñado para Vite. Pero ahora viene con mucho más, así que viene con modo navegador, pruebas de componentes, e incluso características de benchmarking. Una cosa importante que quiero mencionar aquí es cuando estamos evaluando la velocidad del corredor de pruebas. Hay algunos corredores de pruebas, por ejemplo, BounceTestRunner por defecto ejecuta los comandos, ejecuta cada prueba sin aislamiento, por lo que muchas de estas pruebas en realidad comparten estado global, lo que significa que no es técnicamente seguro. Así que si una prueba muta el estado global, puede afectar los resultados de otras pruebas. ViteTest opta por ser seguro por defecto, así que todos los casos de prueba están aislados, forzados a estar aislados por defecto, lo que hace que las cosas, ya sabes, haya una sobrecarga de rendimiento por esto, pero optamos por la corrección sobre el rendimiento en este caso. Puedes desactivarlo si quieres, pero recomendamos desactivar el aislamiento. Linting y formateo. Así que OX-Lint maneja el linting sintáctico, y es 100 veces más rápido que ES-Lint. Las reglas no son tan completas, y actualmente estamos trabajando en un sistema de plugins de JavaScript para OX-Lint, para que puedas escribir plugins personalizados para OX-Lint y potencialmente ser compatible con algunos plugins populares de ES-Lint. Pero en OX-Lint en sí, ya hemos portado la mayoría de las reglas en algunos de los plugins más populares. Otro tema importante que estamos investigando ahora mismo es el linting consciente de tipos. Hay múltiples maneras de hacer esto. Hay diferentes proyectos, por ejemplo, Biome, explorando diferentes direcciones, pero nuestro enfoque a corto plazo actual probablemente será integrar TSS-Lint junto con OX-Lint para servir como el comando de lint en B-plus. Así que TSS-Lint en realidad integra las rutas de verificación de tipos de TSC para implementar reglas de linting durante la verificación de tipos, por lo que solo pagas el costo de TSC una vez en lugar de ejecutarlo nuevamente en tu linter. También estamos investigando activamente la implementación de TS-Go y verificando cómo podemos implementar una interoperabilidad eficiente entre Go y Rust, probablemente usando SyncRPC, para que podamos conectarnos a los diagnósticos de TS-Go en nuestro linting para realizar el linting consciente de tipos con el mejor rendimiento.
Comments