3-Package.json y NPM -Curso de Node.js [ #03 Package.json y NPM ]

Package.json, Dependencias y NPM

Introducción

¡Bienvenidos a un nuevo tutorial! Hoy vamos a aprender qué es el package.json, cómo funcionan las dependencias y cómo trabajar con NPM (Node Package Manager).


📌 ¿Qué es NPM?

NPM significa Node Package Manager y es el administrador de paquetes estándar para Node.js. Gracias a NPM podemos agregar "superpoderes" a nuestras aplicaciones utilizando paquetes creados por otros desarrolladores.

Nota: NPM se instala automáticamente cuando instalas Node.js.


🚀 Paso 1: Inicializar nuestro proyecto con npm init -y

Para comenzar, debemos crear el archivo package.json en nuestro proyecto. Este archivo contendrá información importante como:

  • Nombre del proyecto

  • Versión

  • Descripción

  • Scripts

  • Dependencias

Comando:

bash
npm init -y

¿Qué significa la bandera -y?

La bandera -y (yes) acepta todas las opciones por defecto sin hacer preguntas.

Resultado:

Se crea un archivo package.json similar a esto:

json
{
  "name": "Fundamentos",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

📁 ¿Qué contiene el package.json?

CampoDescripción
nameNombre de tu proyecto
versionVersión actual (semver: mayor.menor.parche)
descriptionDescripción del proyecto
mainPunto de entrada de la aplicación
scriptsComandos que se pueden ejecutar con npm run
dependenciesPaquetes necesarios para que funcione el proyecto
devDependenciesPaquetes solo para desarrollo
keywordsPalabras clave del proyecto
authorAutor del proyecto
licenseLicencia del proyecto

🔧 Paso 2: Instalar nuestro primer paquete

Vamos a instalar el paquete cowsay como ejemplo. Este paquete hace que una vaquita hable en la terminal.

Comando de instalación (local):

bash
npm install cowsay

o usando la versión abreviada:

bash
npm i cowsay

¿Qué sucede después de la instalación?

  1. Se crea la carpeta node_modules - aquí se guardan todos los paquetes instalados

  2. Se actualiza el package.json añadiendo las dependencias:

json
"dependencies": {
  "cowsay": "^1.4.0"
}
  1. Se crea el archivo package-lock.json - este archivo bloquea las versiones exactas de los paquetes instalados


🐮 Paso 3: Usar el paquete instalado

Ahora podemos usar cowsay en nuestro código:

javascript
// app.js
const cowsay = require("cowsay");

console.log(cowsay.say({
    text: "Hola amigos de bluuweb",
    e: "o0",      // los ojos de la vaca
    T: "U "       // la lengua
}));

Para ejecutar:

bash
node app.js

Resultado:

text
< Hola amigos de bluuweb >
  -----------------
   \   ^__^
    \  (o0)\_______
       (__)\       )\/\
        U  ||----w |
           ||     ||

📊 Tipos de Dependencias

Dependencies (dependencias de producción)

Son necesarias para que la aplicación funcione en producción:

json
"dependencies": {
  "cowsay": "^1.4.0",
  "express": "^4.18.0"
}

DevDependencies (dependencias de desarrollo)

Solo necesarias durante el desarrollo:

json
"devDependencies": {
  "autoprefixer": "^7.1.2",
  "babel-core": "^6.22.1"
}

Para instalar como devDependency:

bash
npm install --save-dev nombre-del-paquete
# o
npm i -D nombre-del-paquete

🌍 Instalación Local vs Global

TipoComandoUbicaciónUso
Localnpm install cowsaynode_modules del proyectoPaquetes que tu proyecto necesita
Globalnpm install -g cowsaySistema (computadora)Herramientas de línea de comandos (CLI)

Ejemplo de instalación global:

bash
npm install -g cowsay
# Luego puedes ejecutar directamente:
cowsay "Hola mundo"

🏃 npx: Ejecutar paquetes sin instalar globalmente

npx ejecuta un paquete sin necesidad de instalarlo de forma global:

bash
npx cowsay "Hola sin instalar globalmente"

¿Para qué sirve npx?

  • Ejecutar paquetes sin instalarlos permanentemente

  • Usar diferentes versiones de un mismo paquete

  • Ejecutar CLIs como create-react-app:

bash
npx create-react-app mi-app

📦 La carpeta node_modules

  • Contiene todos los paquetes y sus dependencias

  • NO se debe subir a GitHub (pesa mucho)

  • Se puede volver a generar con npm install

Por qué no compartir node_modules:

  • Ocupa mucho espacio

  • Contiene miles de archivos

  • Se puede recrear fácilmente


🔄 Reconstruir un proyecto

Si alguien te envía un proyecto con package.json pero sin node_modules:

bash
# Instalar todas las dependencias
npm install
# o
npm i

Esto leerá el package.json y descargará todas las dependencias necesarias.


🎮 Scripts en package.json

Los scripts son atajos para comandos comunes:

json
"scripts": {
  "start": "node app.js",
  "dev": "nodemon app.js",
  "test": "echo \"Error: no test specified\" && exit 1"
}

Para ejecutar scripts:

bash
npm start      # para el script "start" (no necesita run)
npm run dev    # para otros scripts
npm test       # para el script "test" (no necesita run)

📈 Actualizar paquetes

Actualizar un paquete específico:

bash
npm update cowsay

Actualizar todos los paquetes:

bash
npm update

Verificar qué paquetes tienen actualizaciones:

bash
npm outdated

🗑️ Desinstalar paquetes

bash
npm uninstall cowsay
# o
npm un cowsay

📝 Resumen de comandos útiles

ComandoDescripción
npm init -yCrear package.json
npm installInstalar todas las dependencias
npm install <paquete>Instalar paquete como dependencia
npm install -D <paquete>Instalar como devDependency
npm install -g <paquete>Instalar globalmente
npm uninstall <paquete>Desinstalar paquete
npm updateActualizar paquetes
npx <paquete>Ejecutar paquete sin instalar
npm run <script>Ejecutar script definido

✅ Conclusión

  • package.json es el corazón de tu proyecto Node.js

  • NPM te permite instalar y gestionar paquetes

  • node_modules se puede regenerar con npm install

  • No compartas la carpeta node_modules, solo el package.json

  • Usa npx para ejecutar paquetes sin instalación global

¡Ahora ya sabes cómo gestionar dependencias en Node.js! 




--------------------------------------

Aquí tienes un resumen en 10 puntos del video "Curso de Node.js [#03 Package.json y NPM]", con timestamps relevantes:

  1. Introducción al video (00:00)
    Se trata del tercer video del curso de Node.js, centrado en package.json y NPM. Se sugiere ver los videos anteriores para mejor comprensión.

  2. ¿Qué es NPM? (00:20)
    NPM (Node Package Manager) permite añadir "superpoderes" a Node.js mediante paquetes desarrollados por otros.

  3. ¿Qué es package.json? (01:15)
    Es un archivo que contiene información del proyecto y un listado de las dependencias (paquetes) usadas, incluyendo sus versiones.

  4. Creación del archivo package.json (01:50)
    Se genera con el comando npm init -y, lo que crea el archivo con configuraciones por defecto (nombre, versión, descripción, scripts, etc.).

  5. Uso de scripts (02:29)
    Se pueden definir scripts personalizados, por ejemplo para ejecutar la aplicación con npm run.

  6. Instalación de paquetes con NPM (05:23)
    Se usa npm install <nombre_paquete> o simplemente npm i. También se explican las instalaciones locales y globales.

  7. Ejemplo práctico con el paquete cowsay (06:00)
    Se instala el paquete cowsay, se requiere en el código (require('cowsay')) y se ejecuta para mostrar un mensaje en forma de vaquita en la consola.

  8. Dependencias en package.json y node_modules (07:10)
    Al instalar un paquete, se añade a la sección dependencies y se crea la carpeta node_modules con el contenido necesario.

  9. Reinstalar dependencias en otros equipos (09:04)
    No se debe compartir node_modules. Basta con compartir el código fuente y el package.json; luego se ejecuta npm install para regenerar dependencias.

  10. Instalación global y uso de npx (10:18–12:08)

  • Instalaciones globales: útiles para herramientas como Vue CLI.

  • npx: ejecuta paquetes sin necesidad de instalarlos globalmente (ejemplo: npx cowsay).

El video concluye invitando a los usuarios a suscribirse y anticipa el siguiente tema: creación de un servidor HTTP en Node.js.

*************************

Ejecutando Código de Node desde el package.json

Miniatura de la clase
1:11 / 8:03

En este vídeo estaremos viendo cómo mandar llamar y ejecutar el código de Node.js.

Paso 1: Crear el archivo principal

Siempre tienes que tener un archivo principal. Este archivo se va a encargar de llamar todos los demás archivos de tu aplicación.

Vamos a crear aquí un archivo nuevo. Este archivo lo puedes nombrar como desees:

Nombre común¿Es válido?
app.js✅ Sí
index.js✅ Sí
main.js✅ Sí
node.js✅ Sí
nombre del proyecto✅ Sí

A diferencia de HTML (donde el archivo principal se llama index.html), en Node.js no es obligatorio un nombre específico.

En mi caso lo voy a nombrar como index.js (más que nada para mantener la costumbre).

Paso 2: Escribir código de prueba

Aquí voy a colocar un console.log que va a decir "Hola mundo":

javascript
// index.js
console.log("Hola mundo")

Recuerda que el punto y coma es opcional en JavaScript y en Node.js. No es obligatorio.

Paso 3: Configurar el script en package.json

¿Cómo lo mandas a llamar? Lo vas a mandar llamar por medio del package.json. En la sección de scripts puedes colocar el nombre de un script y el comando que se va a ejecutar.

Vas a ponerle aquí el nombre start:

json
{
  "scripts": {
    "start": "node index.js"
  }
}

Explicación del comando:

  • node → comando global para ejecutar código Node.js

  • index.js → el archivo que queremos ejecutar

  • Puedes usar ./index.js o solo index.js (ambos funcionan)

Es muy importante que recuerdes que node es el que nos permite interactuar con los archivos de nuestro proyecto.

Paso 4: Ejecutar el script

Para mandar llamar a este script, vas a colocar en la terminal:

bash
npm run start

Puedes ver que aparece: "Hola mundo"

Atajo especial para start

El script start es especial. También puedes ejecutarlo sin run:

bash
npm start

Ambos comandos dan el mismo resultado.

Paso 5: Probando cambios

Supongamos que tengo otra suma:

javascript
// index.js
console.log(2 + 2)  // muestra 4

Si cambio a:

javascript
console.log(2 + 3)  // muestra 5

Tengo que guardar cambios y volver a llamar npm start para ver el nuevo resultado.

¿Cómo le hacemos para no tener que estar reiniciando manualmente?

Paso 6: Instalar nodemon (dependencia de desarrollo)

Nodemon es una dependencia que es muy útil cuando estás desarrollando un proyecto, porque va a reiniciar el servidor automáticamente con los nuevos cambios.

Vamos a instalarlo como dependencia de desarrollo:

bash
npm i -D nodemon

Abrimos el package.json y podemos ver que ya tenemos:

json
{
  "dependencies": {
    "express": "^4.18.0"
  },
  "devDependencies": {
    "nodemon": "^3.0.0"
  }
}

Paso 7: Crear script con nodemon

Podemos poner una coma y crear un segundo script:

json
{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  }
}

Diferencia clave:

  • node → ejecuta y finaliza

  • nodemon → se queda esperando cambios y reinicia automáticamente

Paso 8: Ejecutar el script dev

bash
npm run dev

Puedes ver que aparece una línea verde que dice: "waiting for changes before restarting"

Ventaja:

Si yo elimino esta línea y guardo cambios:

javascript
// Cambio en index.js
console.log(2 + 5)

Automáticamente reinicia el servidor y me muestra los últimos cambios.

Resumen de scripts útiles

ScriptComandoUso
startnode index.jsEjecución normal (producción)
devnodemon index.jsDesarrollo con auto-reinicio

Beneficio principal de nodemon

No tenemos que:

  • Abrir la terminal cada vez

  • Mandar llamar node

  • Verificar los cambios manualmente

Automáticamente va a reiniciar todo por nosotros.


¿Qué sigue?

Tenemos Express instalado. En el próximo vídeo veremos:

  • Cómo crear ya nuestro proyecto de Express

  • Cómo montar el servidor

¡Continuamos en el próximo vídeo! 


7. Nodemon para Desarrollo

Instalación:

bash

npm install --save-dev nodemon

Configurar en package.json:

json

"scripts": {

  "start": "node app.js",

  "dev": "nodemon app.js"

}

Uso:

bash

npm run dev  # Recarga automática al guardar cambios

Comentarios

Entradas más populares de este blog

Cómo Iniciar un Proyecto Node.js

6-Middleware?

5-Express--Curso de Node.js [ #05 Introducción a Express.js ]