Trata de un repositorio que posee un componentes versionados a nivel de sistema de diseño.
Trata de un repositorio que posee un componentes versionados a nivel de sistema de diseño esto quiere decir que cualquier cambio a nivel de componente se publicara como una nueva versión del sistema de diseño.
Mayor agilidad al crear nuevos componentes, ya que no deberemos crear un nuevo package para un nuevo componente.
Facil centralización de todo el sistema de diseño, bastara con un fichero components
para definir que se exporta a nivel de sistema de diseño.
No podremos individualizar las dependencias por componente, ya que estas estarán atadas al package de todo el sistema de diseño.
Trata de un repositorio que posee un sistema de diseño versionados por componentes
Es la estrategia más habitual al momento de crear sistemas de diseño, ya que permite individualizar los cambios a nivel de componente:
Gracias a que cada componente posee su package.json se lograra:
Versionamiento: Cada package estará versionado, ejemplo @ds/button@1.0.0
, esto permite que podamos agregar mejoras o corregir problemas apuntando solo a la versión del componente afectado.
Mantenimiento: Al ser un package, podemos individualizar sus dependencias y pruebas, lo que facilita el mantenimiento.
Abstracción: Trata de que cada componente aislara en su package los slots de composición(Subcomponentes que únicamente dependen del componente principal, ejemplo el tag option depende del tag select) y alguna otra utilidad especifica del componente.
Las siguientes desventajas son prácticas:
Mayor lentitud al crear nuevos componentes, ya que cada componente requerirá ser un nuevo package.
Mayor dificultad de centralización de componentes en un solo package, ya que cada cambio requerirá actualizar el package principal y adjuntar la nueva exportación.
Las desventajas prácticas pueden ser reparadas mediante herramientas de CLI que automatizan la generación de archivos y centralización de packages
Le invito a conocer 2 estrategias de estructuración de tu repositorio para tu proyecto como sistemas de diseño.
Puede ser confuso abordar a el desarrollo de un sistema de diseño sin saber como estructurar nuestro proyecto, la estructura de nuestro repositorio definirá en gran medida el formato de publicación de su sistema de diseño sea:
Es la forma más eficiente de asilar las herramientas que gira entorno a nuestro sistema de diseño.
Esto mantendrá limpio el workspaces, ejemplo:
Storybook puede consumir las historias fuera de su repositorio