Entonces, me dijeron que tengo siete minutos, así que sin código, solo diapositivas, solo código, sin diapositivas, y lo que quiero hablar un poco en esta breve charla es cómo podemos acelerar MonrayBus, ¿de acuerdo?
Entonces, lo que tengo aquí es un espacio de trabajo pmpm, y utiliza pmpm como el sistema de gestión de paquetes. Es casi lo mismo que para npm o YARN workspaces, así que no hay una gran diferencia allí. Entonces, lo que puedes ver aquí en este archivo, especificamos dónde viven nuestros paquetes, que es aquí en esta carpeta de paquetes, donde cada uno de los paquetes básicamente tiene sus propios módulos de nodo, tienen sus propias definiciones de paquete JSON, también sus propios archivos de entrada, y lo más importante aquí abajo, incluso pueden tener dependencias entre ellos, ¿verdad?
Entonces, en un escenario de MonrayBus, y este es un caso especial donde se usa muy a menudo en bibliotecas de código abierto donde quieres publicar múltiples paquetes y pueden tener algunas Si miras el repositorio de React, VEET, Vue, Angular, muchos de ellos usan estos tipos de enfoques. Entonces, ¿cómo funciona esto? Ahora, en PMPM específicamente, hay este prefijo, y eso significa que debes resolver el paquete localmente dentro de Monray pero no buscar en algún registro de MMPM, y en tu espacio de trabajo MMPM no necesitas eso, pero esa estrella allí será la misma, y eso simplemente significa que siempre quiero depender de la última versión porque está localmente en mi espacio de trabajo, ¿verdad? No hagas esto para aplicaciones de producción. Esto es solo dentro del repositorio de Monray.
Entonces, ¿dónde vive este paquete? Ahí es donde esto vuelve a entrar en juego porque puede averiguar si puede vivir en esta carpeta de ejemplos o en una carpeta de paquetes. En este caso, esta biblioteca de UI aquí. Y nuevamente, este es un paquete con algunos scripts de construcción, scripts de prueba y potencialmente autores también, y luego tenemos aquí arriba algunas aplicaciones de ejemplo. Ahora, si desarrollas esto como tu repositorio de Monray de aplicación, esto podría ser la producción real. En repositorios de Monray basados en paquetes de código abierto, esto suele ser páginas de ejemplo donde pruebas tu producto o tus paquetes, o incluso podría implementarse junto con tu documentación para algunas demostraciones en vivo. Entonces, ¿cómo ejecutas cosas en un repositorio de Monray de este tipo? Bueno, obviamente podrías ingresar a la carpeta de paquetes y simplemente ejecutar estos scripts, ¿verdad? Eso funcionaría perfectamente. Sin embargo, no es muy práctico.
Entonces, por ejemplo, PMPM tiene un concepto llamado filtros. Por ejemplo, puedo filtrar todos los paquetes en esta carpeta de paquetes y ejecutar ese script aquí, que es ese script de construcción. Así que recorre recursivamente estos paquetes. Ahora, en este caso, es una configuración simple. Así que solo tenemos dos y los construiría. Ahora, también puedo ir y construir solo uno. Por ejemplo, tengo aquí ese remix allá arriba, y apunto al script de desarrollo. Entonces eso lanzaría mi aplicación remix, y luego puede servirla en local 3,000. Y puedo navegar por mi aplicación remix aquí, ¿verdad? Así que tengo, simplemente renderiza los componentes que están aquí. Sí. Es genial. De acuerdo. Entonces, podrías preguntarte, ¿qué hay de malo en esta configuración? Y realmente no hay nada mal aquí, ¿verdad? Porque funciona, y especialmente en una configuración más pequeña, funciona perfectamente bien y escala bien. Sin embargo, ya hay algunas cosas que podríamos optimizar. Por ejemplo, estos paquetes pueden depender potencialmente entre sí. Entonces, por ejemplo, el siguiente, nuestra aplicación remix importó la lista de productos, que internamente hemos visto que depende de la biblioteca de UI. Entonces, ¿qué sucede, por ejemplo, si elimino esta carpeta, porque consumieron esta carpeta, porque en el paquete json referenciamos estos archivos, que es la salida compilada de nuestros archivos typescript. Luego, si sirvo, por ejemplo, nuevamente la aplicación remix, se rompería, porque no puede resolver esos puntos de entrada, y así se rompe, ¿verdad? Y tendría que volver a ejecutar ese filtro, reconstruirlo, y luego funcionaría. Las cosas que debo tener en cuenta para ordenar cómo construirlos, debo construir primero el UI, luego la lista de productos y luego la aplicación.
Comments