Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Dependencias para el desarrollo JS: Configuración del entorno

Cuando empezamos un proyecto en JavaScript (o en cualquier otro lenguaje), es muy importante tener claro que vamos a trabajar con al menos dos entornos:

  • Un entorno de desarrollo, donde vamos escribiendo y probando el código en nuestros computadores.

  • Un entorno de producción, que es donde el código va a ejecutarse ya en la vida real, para los usuarios.

Aunque estos dos entornos pueden parecer parecidos al principio, en realidad tienen objetivos diferentes, y por eso también requieren herramientas distintas. Aquí te vamos a contar cómo manejar eso correctamente usando Node.js y npm.


Entornos de desarrollo y de producción

Veámoslo con un ejemplo real. Supongamos que estamos haciendo una aplicación en Node.js. Mientras estamos construyendo esa app en nuestro computador, necesitamos algunas herramientas que nunca van a ser necesarias una vez la aplicación esté en producción.

Por ejemplo:

  • Frameworks para escribir pruebas automatizadas (como Jest)
  • Revisores de código o linters (como ESLint)

Estas herramientas nos ayudan a escribir un mejor código, pero no hacen parte del producto final. Así que no tiene sentido que hagan parte del código que vamos a subir al servidor de producción, ya que solo ocupan espacio y pueden hacer más lento el despliegue.


¿Cómo se maneja esto en JavaScript?

En los proyectos de JavaScript que usan Node.js y npm, podemos separar los paquetes según su propósito dentro del archivo package.json.

Tipo de dependencia ¿Para qué se usa? ¿Dónde se guarda?
Dependencias normales (dependencies) Funcionamiento del programa en producción Se instalan siempre a menos que digamos lo contrario
Dependencias de desarrollo (devDependencies) Solo las usamos mientras desarrollamos Se omiten en producción si usamos ciertos comandos

Agregar dependencias de desarrollo

Cuando instalamos un paquete que solo vamos a usar mientras desarrollamos, debemos usar el flag --save-dev. Mira este ejemplo:

# Instalamos Jest, una herramienta para escribir pruebas automatizadas
npm  install  --save-dev  jest

Otro ejemplo:

# Instalamos ESLint, una herramienta para revisar que el código esté bien escrito
npm  install  --save-dev  eslint

Luego, en el archivo package.json vamos a ver algo como esto:

"devDependencies": {
"jest": "^26.4.1",
"eslint": "^8.0.0"
}

¿Y cómo se diferencian de las dependencias normales?

Las dependencias para producción se instalan con este comando:

npm  install  nombre-del-paquete

Sin el --save-dev. Estas van en la sección "dependencies" del package.json y son fundamentales para que la aplicación funcione correctamente cuando esté en producción.


¿Dónde usamos estas herramientas?

Esas herramientas de desarrollo normalmente se usan en archivos o carpetas distintas del programa principal. Por ejemplo:

  • Las pruebas suelen ir en una carpeta llamada tests/

  • Los linters solo se ejecutan en el desarrollo, antes de subir los cambios

Por eso, estas dependencias no se cargan durante la ejecución de la aplicación en producción.

👉 Revisa este proyecto de ejemplo que ya tiene configuradas las devDependencies: Repositorio en GitHub


Instalar dependencias en producción

Cuando subimos nuestro proyecto a un servidor (por ejemplo, usando GitHub Actions o Docker), no queremos perder tiempo ni espacio instalando herramientas de desarrollo. Por eso usamos uno de estos dos comandos:

Opción 1: instalar solo las dependencias necesarias

npm  install  --production

Este comando solo instala lo que esté en "dependencies", ignorando lo que esté en "devDependencies".

Opción 2: usar una variable de entorno

También puedes decirle a npm que es un entorno de producción usando una variable de entorno:

NODE_ENV=production  npm  install

Opción recomendada: instalación limpia para producción

Una opción mucho mejor para producción es usar:

npm  ci  --production

El comando npm ci:

  • Instala exactamente las versiones que aparecen en package-lock.json.

  • Es más rápido.

  • Reduce las posibilidades de errores.

Ideal para ambientes como servidores o integraciones continuas.


Resumen

  • Los entornos de desarrollo y producción tienen necesidades diferentes.
  • Las herramientas como linters y frameworks de pruebas se instalan como devDependencies.
  • Usamos npm install --save-dev para instalarlas.
  • En producción, se recomienda usar npm ci --production o npm install --production para evitar instalar lo que no se necesita.
  • Organizar bien tus dependencias hace que tus proyectos sean más livianos, rápidos y seguros cuando se despliegan.
  • Saber esto desde el inicio te va a ayudar muchísimo a entender mejor cómo funcionan los proyectos en Node.js y qué significan esos apartados en package.json.

Trabajo independiente

🔍 Diferencias entre dependencias de desarrollo y producción en Node.js

Vamos a clonar un proyecto de ejemplo para entender qué pasa cuando instalas dependencias en modo desarrollo y en modo producción.

1️⃣ Clona el proyecto:

git clone https://github.com/hexlet-boilerplates/nodejs-package.git
cd nodejs-package

2️⃣ Instala las dependencias (modo desarrollo):

npm install

3️⃣ Prueba que funciona:

bin/nodejs-package.js 10

👉 Verás un número en la pantalla (el resultado de la operación).

4️⃣ Ejecuta las pruebas:

npm test

5️⃣ Explora el proyecto:

  • Abre el archivo package.json y mira las secciones dependencies y devDependencies.
  • Revisa las carpetas src y __tests__ para ver el código y las pruebas.

6️⃣ Compara tamaños:

En Ubuntu o Mac puedes ver el tamaño de node_modules con:

du -sh node_modules

Luego borra y reinstala solo dependencias de producción:

rm -rf node_modules
npm install --production
du -sh node_modules

En Windows puedes usar dir /s node_modules desde PowerShell, aunque el formato será diferente.

💡 Verás que el tamaño es menor: no se instalaron herramientas de pruebas ni utilidades solo necesarias para desarrollo.

ℹ️ Este es un proyecto de ejemplo solo para explorar cómo funcionan las dependencias de desarrollo. Una vez termines de probarlo, puedes volver a tu proyecto codica-js para seguir trabajando ahí.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY