Y está soportado en todos los principales gestores de paquetes, npm, yarn, pnpm, bun. Todos estos están integrados. Todos estos gestores de paquetes tienen soporte integrado para workspaces.
Lo que es un workspace, si nunca lo has usado antes, es solo una entrada dentro de tu package JSON que apunta a una ubicación donde te gustaría decirle a tu gestor de paquetes, estos son subproyectos dentro de este workspace.
Así que en este caso, tenemos dos ubicaciones que queremos que se consideren workspaces, o parte de este workspace, tenemos una app, así que vamos a listar cada carpeta dentro de apps. Y luego tenemos un packages para que podamos dividir lo que se considera proyectos de nivel superior de tipo app y paquetes que se usan dentro de esas apps.
Cuando procedemos a instalar todas nuestras dependencias, realmente podemos decirle a cada uno de esos paquetes, me gustaría usar la biblioteca ABC o uno, dos y tres, referenciarlos usando una sintaxis diferente.
En lugar de dar un número de versión, solo vamos a decir workspace. Y node actuará, tu node en tu gestor de paquetes realmente los enlazará a los node modules. Ahora todos tus paquetes se resuelven como si vinieran de node modules, y si fueran solo tu viejo paquete npm.
Así que eso es genial, funciona bien, pero no resuelve todo todavía. Y ahí es donde llegamos a las referencias de proyecto. Porque si tenemos todas estas cosas enlazadas en nuestros node modules, ¿cómo nos aseguramos de que esos tipos estén incluidos? ¿Y cómo nos aseguramos de saber de dónde vienen todos estos paquetes?
referencias de proyecto? ¿Alguien ha oído hablar de referencias de proyecto antes? De nuevo, estoy actuando como si esto fuera en vivo, y pudiera verte. Lo más probable es que la mayoría de la gente no haya oído hablar de referencias de proyecto. Fue algo que salió en TypeScript tres, y solo lo había oído el año pasado.
Las referencias de proyecto son una forma de referenciar otros proyectos en un proyecto de TypeScript. Bastante, bastante autoexplicativo. Así que si pensamos en nuestro punto de dolor de usar alias de path, recuerda, sigue siendo una mentira. Estos no resuelven ninguno de nuestros puntos de dolor. Estos no hacen que TypeScript sea rápido.
Sin embargo, esto puede hacer que TypeScript sea rápido, asegúrate de que estoy usando mis palabras correctamente, puede hacer que tu TypeScript sea rápido. Lo que estamos haciendo aquí es en lugar de apuntar a un proyecto real, como a un punto de entrada real como hicimos con los paths, realmente estamos apuntando de nuevo a un directorio que tiene un TS config allí.
Así que aunque esto se ve muy similar, es fundamentalmente un enfoque diferente de cómo podemos tener TypeScript pre todo en aislamiento. Así que la propiedad path es realmente una referencia a otro TS config. Y un proyecto que quieres solo o cualquier otro archivo de configuración que quieras decirle a TypeScript, este es un subproyecto, esto es algo que se va a construir, aislado de todo lo demás.
Así que referencias, todo esto simplemente funciona. Y volvamos a nuestro editor. Y oye, mira, nuestra construcción de antes realmente se completó, puedes ver que tomó alrededor de 106 segundos. La primera construcción tomó alrededor de 109. Así que una ligera diferencia.
Comments