Genial, así que esa es la primera pregunta que cubrimos, y prácticamente llevó a otra docena de preguntas, pero espero que tengas una mejor comprensión sobre el tipo de introspección que necesitas hacer si quieres comenzar a construir tu primera biblioteca de componentes.
Así que la siguiente pregunta que vamos a analizar es si exportar tu biblioteca como un paquete único o como paquetes con ámbito. ¿Y a qué me refiero con esto?
Bueno, si has usado bibliotecas de componentes en el pasado, tal vez Material Web, sabrás que si ejecutas npm install Material Web o cualquier biblioteca de componentes, tendrás acceso a toda la suite de componentes, y esto es realmente útil como consumidor porque si estás consumiendo este tipo de biblioteca de componentes, entonces solo necesitas ejecutar el script de actualización contra un paquete para obtener la última versión de todos los componentes. Puedes mirar fácilmente los registros de cambios.
Y si estás gestionando la biblioteca de componentes tú mismo, es mucho más fácil gestionar una sola versión y luego publicar una sola versión. Para esto, y lo contrastaré con los paquetes con ámbito, y esto podría, bueno, esto es como un Radix UI donde podrías querer usar, digamos, su menú select y tal vez sus componentes de menú popover, y entonces necesitarías ejecutar npm install Radix UI, select menu, y luego npm install Radix UI popover. Así que instalar un solo paquete te da acceso a un solo componente. Y esto es útil si solo planeas usar, digamos, uno o dos, o un número muy, muy pequeño de componentes de una biblioteca dada.
Y tengo un asterisco aquí sobre la reducción de tamaños de paquete, lo cual tal vez no sea estrictamente cierto, lo cual toco un poco más adelante, pero como autor de componentes o autor de biblioteca, tienes mucha flexibilidad en cuanto a cómo los versionas y publicas. Puedes publicarlos, versionarlos independientemente para que cada componente tenga su propia versión, o puedes versionarlos juntos para que cada vez que lances, aumentes la versión para todos ellos y tal vez solo algunos de los cambios, solo se realicen cambios en algunos de esos componentes. Y hablaremos un poco sobre esa última opción en un segundo, porque encuentro eso realmente molesto como consumidor. He trabajado con paquetes independientes que fueron versionados juntos.
Y aunque el sistema de plugins de Gatsby no era necesariamente como una biblioteca de componentes, lo que harías, si has construido con Gatsby en el pasado, probablemente usarías una docena o más de estos diferentes plugins de primera parte, y todos estaban versionados juntos contra la misma versión. Y así lo que sucedería es que si te alejabas de tu computadora por un par de semanas, volvías e intentabas actualizar tus dependencias, verías una lista completa de plugins de Gatsby que necesitaban ser actualizados, y así cuando revisas cada registro de cambios, porque no me gusta simplemente actualizar todo y esperar lo mejor, a menudo verías esto, como aumento de versión, aumento de versión, aumento de versión, aumento de versión, oh, pequeño cambio en el readme, aumento de versión, aumento de versión. Y tendrías que hacer eso a través de una docena o más, si no más, paquetes. Así que eso es un poco molesto. Pero no es tan malo si estás usando un pequeño número de componentes y están versionados independientemente.
De esa manera, tal vez te hayas alejado de tu computadora por dos semanas y solo uno de esos componentes ha cambiado. Así que no necesitas actualizar todos ellos. Ahora, como editor, de hecho he lidiado con la publicación de paquetes con ámbito. Y hablé sobre mi biblioteca de componentes A2K un poco antes. Y para ser totalmente honesto, fue un error y lo lamento enormemente. Así que el propósito de A2K era permitir a las personas construir una interfaz completa usando una suite de componentes de estilo retro. Entonces, ¿por qué haría que mis desarrolladores o mis consumidores instalen cada componente individualmente? Simplemente no tiene sentido. Si planean usar A2K para construir una interfaz, probablemente usarán todos los componentes. Así que hacer que alguien instale 12 componentes mata absolutamente la experiencia de usuario y aumenta la fricción. Y probablemente diría que la adopción habría sido un poco más alta si hubiera publicado todo como un solo componente. Además de eso, gestionar versiones independientes es un poco más complejo.
Comments