Scripts npm avanzados: encadenar, paralelizar y optimizar

Lleva tus scripts al siguiente nivel. Aprende a ejecutar múltiples tareas en paralelo o serie, usar herramientas como npm-run-all, y estructurar scripts complejos para proyectos profesionales.

Los scripts básicos de npm covering necesidades simples, pero cuando trabajas en proyectos reales, a menudo necesitas ejecutar múltiples tareas: lint + test antes de hacer commit, servidor de desarrollo + servidor de API en paralelo, o build de varios paquetes.

En esta lección vas a aprender técnicas avanzadas para scripts npm: ejecutar tareas en serie con &&, en paralelo con herramientas como concurrently, y estructurar scripts complejos de forma mantenible.

Al terminar, tendrás scripts profesionales que automatizan flujos de trabajo completos de forma eficiente.

  • Ejecutar tareas una después de otra.
  • El operador && ejecuta el segundo comando solo si el primero termina exitosamente (código de salida 0). Esto es útil para flujos donde cada paso depende del anterior: lint debe pasar antes de test, build debe terminar antes de deploy.
  • El operador ; (punto y coma) ejecuta el segundo comando sin importar si el primero falló. Úsalo con precaución.
  • Ejecutar múltiples tareas simultáneamente.
  • A veces necesitas ejecutar varias tareas al mismo tiempo: servidor de desarrollo + servidor de API + watcher de tests. El operador & no funciona bien en cross-platform, así que usamos concurrently.

Encadenar en serie: &&

Ejecutar tareas una después de otra.

El operador && ejecuta el segundo comando solo si el primero termina exitosamente (código de salida 0). Esto es útil para flujos donde cada paso depende del anterior: lint debe pasar antes de test, build debe terminar antes de deploy.

El operador ; (punto y coma) ejecuta el segundo comando sin importar si el primero falló. Úsalo con precaución.

Ejecutar en paralelo: concurrently

Ejecutar múltiples tareas simultáneamente.

A veces necesitas ejecutar varias tareas al mismo tiempo: servidor de desarrollo + servidor de API + watcher de tests. El operador & no funciona bien en cross-platform, así que usamos concurrently.

concurrently es una librería que permite ejecutar múltiples comandos en paralelo. Es especialmente útil para desarrollo local donde quieres varios procesos corriendo.

npm-run-all: control total

Ejecutar múltiples scripts con npm-run-all.

npm-run-all ofrece más control que concurrently: puedes ejecutar en serie (--serial) o en paralelo (--parallel), esperar a que todos terminen, o continuar aunque uno falle.

Los patrones te permiten ejecutar grupos de scripts con wildcards: 'npm run build:*' ejecuta todos los scripts que empiezan con 'build:'.

Scripts para flujos de trabajo comunes

Automatiza tu flujo de desarrollo.

Estos son scripts que verás en proyectos profesionales: 'precommit' corre lint y test antes de cada commit, 'prepush' corre tests antes de hacer push, y 'prepare' se ejecuta al instalar el proyecto.

Estos hooks de lifecycle te ayudan a mantener calidad de código sin depender de que cada desarrollador recuerde ejecutar las verificaciones.

Variables de entorno en scripts

Personaliza comportamiento según el entorno.

Puedes pasar variables de entorno a tus scripts directamente en la línea de comando o definirlas en package.json. Esto es útil para configurar entornos: desarrollo, staging, producción.

npm config también puede almacenar valores que tus scripts leen.

NPM
10

Scripts npm avanzados: encadenar, paralelizar y optimizar

Lleva tus scripts al siguiente nivel. Aprende a ejecutar múltiples tareas en paralelo o serie, usar herramientas como npm-run-all, y estructurar scripts complejos para proyectos profesionales.

Código del tema: npm run

📘 Teoría

Encadenar en serie: &&

Ejecutar tareas una después de otra.

El operador && ejecuta el segundo comando solo si el primero termina exitosamente (código de salida 0). Esto es útil para flujos donde cada paso depende del anterior: lint debe pasar antes de test, build debe terminar antes de deploy.

El operador ; (punto y coma) ejecuta el segundo comando sin importar si el primero falló. Úsalo con precaución.

Encadenar comandos
#Ejecutar lint, si pasa, ejecutar test
npm run lint && npm run test

#Ejecutar build, luego deploy (sin importar si build falla)
npm run build ; npm run deploy

Ejecutar en paralelo: concurrently

Ejecutar múltiples tareas simultáneamente.

1

A veces necesitas ejecutar varias tareas al mismo tiempo: servidor de desarrollo + servidor de API + watcher de tests. El operador & no funciona bien en cross-platform, así que usamos concurrently.

2

concurrently es una librería que permite ejecutar múltiples comandos en paralelo. Es especialmente útil para desarrollo local donde quieres varios procesos corriendo.

Ejecutar en paralelo con concurrently
#Instalar concurrently
npm install --save-dev concurrently

#Script para ejecutar en paralelo
{
  "scripts": {
    "dev": "concurrently \"npm run dev:server\" \"npm run dev:client\""
  }
}

npm-run-all: control total

Ejecutar múltiples scripts con npm-run-all.

1

npm-run-all ofrece más control que concurrently: puedes ejecutar en serie (--serial) o en paralelo (--parallel), esperar a que todos terminen, o continuar aunque uno falle.

2

Los patrones te permiten ejecutar grupos de scripts con wildcards: 'npm run build:*' ejecuta todos los scripts que empiezan con 'build:'.

npm-run-all ejemplos
#Instalar
npm install --save-dev npm-run-all

#Ejecutar en serie
"build:all": "npm-run-all --serial build:css build:js"

#Ejecutar en paralelo
"dev:all": "npm-run-all --parallel dev:server dev:client"

#Ejecutar patrones
"build:*": "npm-run-all build:css build:js build:assets"

Scripts para flujos de trabajo comunes

Automatiza tu flujo de desarrollo.

1

Estos son scripts que verás en proyectos profesionales: 'precommit' corre lint y test antes de cada commit, 'prepush' corre tests antes de hacer push, y 'prepare' se ejecuta al instalar el proyecto.

2

Estos hooks de lifecycle te ayudan a mantener calidad de código sin depender de que cada desarrollador recuerde ejecutar las verificaciones.

Scripts de flujo de trabajo
{
  "scripts": {
    "precommit": "npm run lint && npm run test",
    "prepush": "npm run test:coverage",
    "prepare": "npm run build",
    "postinstall": "npm run build:if-needed"
  }
}

Variables de entorno en scripts

Personaliza comportamiento según el entorno.

1

Puedes pasar variables de entorno a tus scripts directamente en la línea de comando o definirlas en package.json. Esto es útil para configurar entornos: desarrollo, staging, producción.

2

npm config también puede almacenar valores que tus scripts leen.

Variables de entorno
#Pasar variable de entorno
ENV=production npm run build

#Con script en package.json
{
  "scripts": {
    "build": "NODE_ENV=production webpack"
  }
}

#Con cross-env (cross-platform)
{
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack"
  }
}

🧪 Aprende probando

Ejemplo Ejemplo: script de precommit Configura un script que corre antes de cada commit.

🏁 Retos

Reto Reto 1: Encadenar lint y test Crea un script que ejecute lint y luego test.
Reto Reto 2: Ejecutar en paralelo Usa concurrently para ejecutar dos tareas.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre NPM.

Test de NPM

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .