JS: Configuración del entorno
Teoría: Dependencias para el desarrollo
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.
Agregar dependencias de desarrollo
Cuando instalamos un paquete que solo vamos a usar mientras desarrollamos, debemos usar el flag --save-dev. Mira este ejemplo:
Otro ejemplo:
Luego, en el archivo package.json vamos a ver algo como esto:
¿Y cómo se diferencian de las dependencias normales?
Las dependencias para producción se instalan con este comando:
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
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:
Opción recomendada: instalación limpia para producción
Una opción mucho mejor para producción es usar:
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-devpara instalarlas. - En producción, se recomienda usar
npm ci --productiononpm install --productionpara 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.
Completado
0 / 11