Dependencias transitivas

¿Qué son las dependencias transitivas?

dependencias-transitivas

Cuando un programador trabaja en el desarrollo de un proyecto, a menudo utiliza dependencias creadas por terceros para cumplir con ciertas tareas. Esto se hace porque es más práctico confiar en una biblioteca diseñada específicamente para ese propósito, en lugar de crear una solución desde cero solo para construir algo más complejo.

Al especificar explícitamente una dependencia en un proyecto (como ocurre con herramientas como NPM), estas se conocen como dependencias directas, ya que son utilizadas directamente por el desarrollador.

Sin embargo, así como el programador usa dependencias para facilitar su trabajo, los autores de esas bibliotecas también pueden depender de otras. Una dependencia transitiva es aquella que no se importa directamente en el proyecto, sino que es incluida por una dependencia directa o por otra dependencia de la dependencia directa.

Un ejemplo de dependencias directas serían las dependencias que se definen en el archivo package.json.

{
"name": "Dependencias-directas",
"type": "module",
"version": "0.0.1",
"private": true,
"dependencies": {
"react": "^19.0.0",
}
}

Si instalamos la librería React del ejemplo usando npm install, esta se instalará en la carpeta node_modules. Y si accedemos al package.json de React veremos que también usa dependencias. Esas son las dependencias transitivas.

Si te fijas la dependencia de React del ejemplo usa un símbolo ^ antes del número de versión; esto representa los requisitos o restricciones de dependencias. Una dependencia siempre estará asociada a un número específico, pero también se pueden usar operadores de restricción (como ^) para permitir ciertas versiones. Otros ejemplos de restricciones podrían ser >=18.0.3 o incluso más complejas, como >18.0.0, <=19.0.0. Estas restricciones permiten que el algoritmo de resolución de versiones seleccione versiones más actualizadas o minimice la cantidad de versiones únicas de una misma dependencia.