Añadir una biblioteca a tu proyecto es el primer comando que vas a repetir mil veces. Esta lección cubre la sintaxis para npm, pnpm y bun, y la distinción entre dependencias normales y de desarrollo.
El comando básico
Con pnpm (recomendado):
Con bun:
Con npm:
Los tres comandos hacen lo mismo: descargan el paquete, lo añaden a dependencies en package.json, y actualizan el lockfile.
Dependencias de desarrollo
Algunos paquetes solo son útiles durante el desarrollo: compiladores de TypeScript, linters, frameworks de test. No quieres que estén en producción. Usa el flag -D (o --save-dev):
Estos paquetes van a devDependencies en package.json en lugar de dependencies.
Entender el versionado semver
Cuando instalas un paquete, package.json registra la versión con un prefijo:
{
"dependencies": {
"react": "^18.3.0",
"lodash": "~4.17.21",
"some-lib": "2.1.0"
}
}^18.3.0(caret): acepta cualquier versión18.x.xmayor o igual a18.3.0. Se permiten actualizaciones de minor y patch.~4.17.21(tilde): acepta solo4.17.x. Solo se permiten actualizaciones de patch.2.1.0(exacta): esta versión precisa, nada más.
El caret ^ es el valor por defecto de pnpm, bun y npm. Es adecuado para la mayoría de los casos.
Instalar paquetes globales
Para una herramienta CLI que quieras tener disponible en todas partes (ej: vercel, http-server):
Prefiere pnpm dlx (o npx) para comandos puntuales en lugar de instalaciones globales:
Reinstalar todas las dependencias
Cuando clonas un proyecto existente, no tienes node_modules/. Simplemente ejecuta:
pnpm lee el lockfile e instala exactamente las mismas versiones que el autor del proyecto.
Versionado semántico de npm