pnpm vs npm vs yarn vs bun: la comparativa definitiva que nadie te va a dar en 2025
Usé los cuatro en proyectos reales. Uno me rompió un monorepo a las 3am. Otro me salvó la vida en producción. Te cuento todo sin filtros.
Usé los cuatro en proyectos reales. Uno me rompió un monorepo a las 3am. Otro me salvó la vida en producción. Te cuento todo sin filtros.
El CI funcionaba. El caché no. Cuarenta minutos de build por run porque pnpm no encontraba el store en GitHub Actions. Acá están los logs, el YAML antes y después, y la configuración exacta que lo bajó a 8 minutos.
Cerrar los endpoints de Actuator no alcanza. Después del incidente, reconstruí el modelo de autorización desde cero: SecurityFilterChain explícito, health groups separados, roles para /metrics y /env, y validación real con curl. Esto es lo que quedó en pie.
El benchmark de install time que publiqué antes no capturó el verdadero costo de pnpm workspaces en CI: cache invalidation silenciosa, hoisting de dependencias que rompe en App Router, y un edge case específico que puede tirar tu pipeline en Railway. Acá está lo que faltó medir.
Después de publicar el análisis de Jakarta EE vs Spring Boot, revisé los defaults de Actuator en un backend propio y encontré endpoints sensibles abiertos que nunca configuré conscientemente. Acá está el checklist de hardening que armé después.
Corrí los tres package managers en el mismo monorepo Next.js 16 + TypeScript estricto con Shadcn/ui y Radix UI. pnpm gana en disco y CI — pero tiene un costo de compatibilidad real que las guías de migración no te cuentan.
Migré un backend de firma digital de Spring Boot 3.x a Jakarta EE 11. Los benchmarks sintéticos prometían maravillas. La producción real me dijo otra cosa. Acá están los números, los tres problemas que ninguna guía oficial menciona, y por qué ninguno de los dos gana en todo.
Comparar Themis con Web Crypto API no es un ejercicio academico: cambia bundle, threat model, rotacion de claves y donde conviene poner cada responsabilidad. Los tradeoffs son menos obvios de lo que parecen.
Functors, monads y pipe() pueden verse impecables en ejemplos chicos, pero en flujos reales con Next.js, Server Actions y Prisma aparecen costos de lectura, bundle y onboarding que conviene medir antes de adoptar el patron completo.
32 años en la trinchera del desarrollo. Acá escribo lo que aprendí, lo que rompí y lo que nadie te cuenta en los tutoriales.
Sin spam. Cancelás cuando querés.