Gestor de paquetes
Una herramienta que descarga, instala y actualiza las bibliotecas que usa un proyecto y apunta sus versiones.
Cada lenguaje tiene el suyo: npm para JavaScript, pip para Python, Cargo para Rust, Composer para PHP, NuGet para .NET o los módulos de Go. Descargan las bibliotecas de un repositorio público y sus dependencias.
Guardan la lista de paquetes y versiones en un archivo del proyecto (package.json, requirements.txt, Cargo.toml…), para que cualquiera pueda reproducir el mismo entorno. Instala solo paquetes conocidos: también se usan para distribuir código malicioso.
Un ejemplo
Al clonar un proyecto de JavaScript, npm install lee package.json e instala todas las bibliotecas necesarias.
Por qué importa
Un gestor de paquetes automatiza lo que de otra forma harías a mano: buscar una biblioteca, descargarla, comprobar qué otras necesita, instalar la versión correcta y actualizarla después. Gracias a él, montar un proyecto con decenas de dependencias lleva minutos y no horas.
También hace que los proyectos sean reproducibles: el archivo de dependencias, como package.json o requirements.txt, permite que otra persona instale exactamente lo mismo con un solo comando. Por eso casi nunca se sube al repositorio la carpeta de librerías instaladas, como node_modules, sino solo la lista de lo necesario.
Confusiones frecuentes
Cada ecosistema tiene el suyo y no son intercambiables: pip para Python, npm, yarn o pnpm para JavaScript, cargo para Rust, Maven o Gradle para Java y NuGet para .NET. No hay que confundir el gestor de paquetes del lenguaje con el del sistema operativo, como apt o brew, que instalan programas del sistema. Un error frecuente es instalar paquetes de forma global y acabar con versiones que chocan entre proyectos, para lo cual existen los entornos virtuales.
Preguntas frecuentes
¿Qué es un archivo de bloqueo (lock)?
Es un archivo, como package-lock.json, que guarda las versiones exactas instaladas para que todos obtengan lo mismo. Conviene subirlo al repositorio.
¿Qué es un entorno virtual en Python?
Una carpeta aislada con sus propias bibliotecas para cada proyecto. Se crea con python -m venv .venv.
Fuentes consultadas
- About npm (npm Docs)