Cada proyecto tiene tareas que haces una y otra vez: arrancarlo, ejecutar tests, limpiar archivos, compilar... Escribir el comando completo cada vez es tedioso y propenso a errores.
Los scripts de npm son atajos que defines una vez y ejecutas siempre con npm run nombre. Es como crear tus propios comandos personalizados para tu proyecto.
Los scripts viven en la sección scripts de tu package.json:
Cada script es simplemente un par nombre → comando. El nombre lo eliges tú, el comando es lo que se ejecutará en la terminal.
Hay dos scripts especiales que no necesitan run:
Son atajos de npm porque start y test se usan con tanta frecuencia que merecían un trato especial.
Aunque no hay reglas estrictas, hay una convención que la mayoría de proyectos sigue:
| Script | ¿Qué hace? | Ejemplo |
|---|---|---|
start | Arranca la app en producción | node index.js |
dev | Arranca la app en modo desarrollo | node --watch index.js |
test | Ejecuta los tests | node --test |
build | Compila el proyecto | tsc |
lint | Revisa calidad del código | eslint src/ |
Cuando llegas a un proyecto nuevo, lo primero que miras es la sección scripts. Te dice cómo arrancarlo, cómo probarlo y cómo trabajar con él. Es el manual de instrucciones del proyecto.
--watch: tu aliado en desarrolloNode.js tiene un flag muy útil para desarrollo:
Con --watch, Node vigila tu archivo y se reinicia automáticamente cada vez que guardas un cambio. Sin él, tendrías que parar y volver a ejecutar el script manualmente cada vez que cambias algo. Por eso es perfecto para el script dev.
Los scripts pueden encadenar comandos como lo harías en cualquier terminal:
El && significa "ejecuta el segundo comando solo si el primero fue exitoso". Es útil para crear workflows como "primero lint, después tests".
scripts, define un script start que ejecute node index.jsdev con un comando de desarrollotest con un comando de testingnpm start en la terminalLos scripts son el pegamento que une tu flujo de trabajo. Un proyecto con buenos scripts es un proyecto donde cualquiera puede contribuir desde el primer momento.