npm-install (GitHub Action)
Para instalar dependencias de npm o Yarn en tus workflows de GitHub Actions cacheando automáticamente node_modules.
GitHub Action que instala dependencias de npm o Yarn con caché automática y casi sin configuración.
Notas y contexto
Qué es
npm-install es una GitHub Action creada por Gleb Bahmutov (bahmutov) que instala las dependencias de un proyecto Node.js y gestiona la caché de forma automática. Detecta el gestor a partir del fichero de lock (package-lock.json, npm-shrinkwrap.json o yarn.lock) y soporta tanto npm como Yarn. Es open source bajo licencia MIT.
Para qué sirve
- Instalar dependencias en un workflow de CI sin configurar manualmente el paso de caché.
- Cachear
node_modulesentre ejecuciones para acelerar los builds. - Trabajar con monorepos instalando en varios directorios mediante
working-directory. - Personalizar el comando de instalación o forzar solo dependencias de producción con
NODE_ENV.
Cuándo usarlo
Encaja cuando quieres una instalación cacheada lista para usar con poca configuración, especialmente si necesitas cachear la carpeta node_modules completa (no solo el caché del gestor). Para casos sencillos hoy puedes lograr un resultado similar con actions/setup-node, que ya incluye caché integrada; valora npm-install cuando necesites opciones como caché rotativa, múltiples directorios o comandos de instalación a medida.
Ejemplo
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: bahmutov/npm-install@v1
- run: npm test
Para un monorepo, indicando varios directorios de trabajo:
- uses: bahmutov/npm-install@v1
with:
working-directory: |
app
packages/ui
useRollingCache: true
Puntos clave
- Detecta automáticamente npm o Yarn según el fichero de lock presente.
- Cachea la carpeta
node_modulesy restaura solo si el lock no ha cambiado. - Soporta múltiples directorios de instalación, útil para monorepos.
- Opciones como
useRollingCache,install-command,cache-key-prefixyuseLockFilepara afinar el comportamiento.
Ten en cuenta
actions/setup-node ya ofrece caché integrada de dependencias (parámetro cache), por lo que para flujos estándar puede bastar sin añadir esta acción. npm-install sigue siendo útil cuando quieres cachear node_modules entero o usar su caché rotativa en proyectos donde la instalación es lenta. El proyecto está activo y mantenido (última versión v1.12.1), pero la mayoría del trabajo recae en un único autor.