2 - Conceptos básicos

Objetivo del tema

En estas secciones afianzarás los pilares de npm: qué entiende la plataforma por paquete, cómo funciona su registro público, cuál es la diferencia entre instalar dependencias de forma local o global y por qué archivos como package.json y package-lock.json son esenciales.

2.1 ¿Qué es un paquete?

Un paquete es una unidad distribuible de código, recursos y metadatos que resuelve una necesidad específica. Puede cubrir desde funciones reutilizables hasta herramientas de desarrollo completas.

  • Incluye un archivo package.json que describe nombre, versión, dependencias y scripts disponibles.
  • Puede contener código fuente, archivos de configuración, binarios precompilados y documentación.
  • Se instala mediante la CLI y se comparte a través del registro de npm o de registros privados.

La modularidad fomenta la colaboración: cada paquete resuelve un problema concreto y evita reescribir soluciones ya existentes.

2.2 ¿Qué es el registro de npm?

El registro es un servicio accesible vía HTTP que almacena paquetes y sus versiones. El registro público, conocido como npm Registry, centraliza las publicaciones de la comunidad.

  • Al instalar un paquete, npm consulta el registro para resolver la versión compatible según las restricciones declaradas.
  • El registro almacena metadatos como historial de versiones, dependencias transitivas, palabras clave y colaboradores.
  • Las organizaciones pueden desplegar registros privados para controlar qué dependencias se comparten o para operar sin conexión a internet.

Comandos como npm view nombre-paquete permiten inspeccionar información publicada, mientras que npm publish envía nuevas versiones al registro configurado.

2.3 Instalación global vs local

npm distingue entre dependencias instaladas dentro de un proyecto y aquellas disponibles en todo el sistema.

Instalación local

  • Es la opción predeterminada de npm install paquete.
  • Los archivos quedan en la carpeta node_modules del proyecto y se documentan en package.json.
  • Permite que cada proyecto use versiones específicas sin interferir con otros desarrollos.
npm install express
Instalación global de un paquete

Instalación global

  • Se realiza con la opción -g o --global.
  • Los ejecutables quedan disponibles en el PATH, ideal para herramientas de línea de comandos.
  • No actualiza el package.json del proyecto, por lo que no debería usarse para dependencias de ejecución.
npm install -g nodemon

Como regla práctica, instala globalmente solo utilidades que ejecutes desde cualquier carpeta y mantén las librerías de una aplicación como dependencias locales.

2.4 Archivos importantes: package.json y package-lock.json

Estos archivos contienen la información necesaria para reproducir la instalación de dependencias de un proyecto.

package.json

Actúa como manifiesto del proyecto y describe metadatos, scripts y dependencias declaradas.

{
  "name": "app-ejemplo",
  "version": "1.0.0",
  "description": "Demo de conceptos básicos de npm",
  "scripts": {
    "start": "node index.js",
    "test": "node --test"
  },
  "dependencies": {
    "express": "^4.19.0"
  },
  "devDependencies": {
    "nodemon": "^3.1.0"
  }
}

Un error de sintaxis JSON impedirá instalar paquetes. Siempre que sea posible deja que la CLI modifique este archivo (por ejemplo, usando npm install o npm set).

package-lock.json

Registra la versión exacta de cada dependencia (incluidas las transitivas) para garantizar instalaciones reproducibles.

  • Se genera y actualiza automáticamente; no deberías editarlo a mano.
  • Incluye checksums que verifican la integridad de los paquetes descargados.
  • Sirve de base para diagnósticos y auditorías de seguridad con comandos como npm audit.

Conserva ambos archivos en tu repositorio para que cualquier colaborador pueda instalar las mismas dependencias sin sorpresas.

Resumen didáctico

Comprender qué es un paquete, cómo funciona el registro, cuándo elegir una instalación local o global y el rol de los manifiestos deja tu proyecto preparado para los flujos de trabajo que abordarás en los próximos temas.