Un punto importante que falta en las otras respuestas:
Usar un administrador de paquetes significa tener una configuración que indica qué versiones de biblioteca está utilizando y se asegura de que la información de configuración sea realmente correcta.
Saber qué bibliotecas usa y qué versión es muy importante si usted:
- necesita actualizar una biblioteca debido a un error crítico / agujero de seguridad;
- o simplemente necesita verificar si un agujero de seguridad anunciado le afecta.
Además, cuando realmente actualiza, el administrador de paquetes (generalmente) se asegura de que las dependencias transitivas se actualicen según sea necesario.
Mientras que con una lib
carpeta, solo tiene un montón de archivos (posiblemente binarios y posiblemente modificados), y tendrá que adivinar de dónde provienen y qué versión son (o confiar en algunos README, que pueden ser correctos o no) )
Para abordar sus otros puntos:
No necesita herramientas externas para administrar paquetes.
Es cierto, pero a) como desarrollador de software, necesita instalar muchas herramientas de todos modos, por lo que una más no suele importar, yb) generalmente solo hay uno o unos pocos administradores de paquetes en un campo determinado (Maven / Gradle para Java, npm para JS / TypeScript, etc.), por lo que no es como si necesitaras instalar docenas de ellos.
No se requiere conexión a Internet para construir.
Todos los administradores de paquetes que conozco trabajan fuera de línea, una vez que han descargado las dependencias requeridas (lo que puede suceder inmediatamente después de descargar el proyecto en sí).
Construcción más rápida (sin verificación de paquete).
Probablemente sea cierto, pero parece poco probable que la verificación del paquete fuera de línea tome una cantidad de tiempo significativa (solo compara algunos números de versión). Una verificación en línea puede llevar un tiempo, pero se puede desactivar si se desea (si está activada de manera predeterminada; Maven, por ejemplo, nunca busca actualizaciones para las versiones de lanzamiento).
Entornos más simples (se requieren menos conocimientos).
Es cierto, pero como se explicó anteriormente, una lib
carpeta también requiere conocimiento. Además, como se explicó anteriormente, probablemente solo trabaje con un puñado de administradores de paquetes diferentes, que ya sabrá.