NPM - Guía Esencial
📦 1. ¿Qué es NPM?
Section titled “📦 1. ¿Qué es NPM?”Concepto
Section titled “Concepto”NPM (Node Package Manager) es el gestor de paquetes predeterminado de Node.js. Permite instalar, compartir y gestionar dependencias de proyectos JavaScript.
Componentes principales
Section titled “Componentes principales”| Componente | Descripción |
|---|---|
| CLI | Herramienta de línea de comandos para interactuar con paquetes |
| Registry | Base de datos pública con millones de paquetes |
| package.json | Archivo que define las dependencias y scripts del proyecto |
| node_modules | Carpeta donde se instalan los paquetes |
¿Por qué usar NPM?
Section titled “¿Por qué usar NPM?”- Reutilización de código: Acceso a millones de paquetes listos para usar
- Gestión de versiones: Control preciso de las versiones de dependencias
- Scripts automatizados: Ejecutar tareas comunes con comandos simples
- Compartir código: Publicar tus propios paquetes
🚀 2. Instalación y Configuración
Section titled “🚀 2. Instalación y Configuración”Verificar instalación
Section titled “Verificar instalación”NPM viene incluido con Node.js. Para verificar que está instalado:
# Verificar versión de Node.jsnode --version# v20.10.0
# Verificar versión de NPMnpm --version# 10.2.3Actualizar NPM
Section titled “Actualizar NPM”# Actualizar NPM a la última versiónnpm install -g npm@latest
# Verificar la nueva versiónnpm --versionConfiguración inicial
Section titled “Configuración inicial”# Ver configuración actualnpm config list
# Configurar autor por defecto para nuevos proyectosnpm config set init-author-name "Tu Nombre"npm config set init-author-email "tu@email.com"
# Configurar registro (registry) personalizadonpm config set registry https://registry.npmjs.org/📁 3. Inicializar un Proyecto
Section titled “📁 3. Inicializar un Proyecto”Crear package.json
Section titled “Crear package.json”El archivo package.json es el corazón de cualquier proyecto Node.js.
# Crear package.json con asistente interactivonpm init
# Crear package.json con valores por defecto (más rápido)npm init -yEstructura del package.json
Section titled “Estructura del package.json”{"name": "mi-proyecto","version": "1.0.0","description": "Descripción del proyecto","main": "index.js","scripts": { "start": "node index.js", "dev": "nodemon index.js", "test": "jest", "build": "webpack --mode production"},"keywords": ["nodejs", "ejemplo"],"author": "Tu Nombre","license": "MIT","dependencies": { "express": "^4.18.2"},"devDependencies": { "nodemon": "^3.0.1"}}Campos importantes
Section titled “Campos importantes”| Campo | Descripción |
|---|---|
name | Nombre único del paquete |
version | Versión semántica (MAJOR.MINOR.PATCH) |
scripts | Comandos ejecutables con npm run |
dependencies | Paquetes necesarios en producción |
devDependencies | Paquetes solo para desarrollo |
📥 4. Instalar Paquetes
Section titled “📥 4. Instalar Paquetes”Tipos de instalación
Section titled “Tipos de instalación”| Comando | Descripción | Uso |
|---|---|---|
npm install paquete | Dependencia de producción | Código que tu app necesita |
npm install -D paquete | Dependencia de desarrollo | Herramientas de desarrollo |
npm install -g paquete | Instalación global | CLIs y herramientas del sistema |
Ejemplos de instalación
Section titled “Ejemplos de instalación”# Instalar una dependencia de producciónnpm install express
# Instalar múltiples paquetesnpm install express mongoose dotenv
# Instalar como dependencia de desarrollonpm install -D nodemon jest eslint
# Instalar globalmente (disponible en todo el sistema)npm install -g typescript
# Instalar versión específicanpm install express@4.18.2
# Instalar última versión de una major versionnpm install express@4Instalar todas las dependencias
Section titled “Instalar todas las dependencias”# Instalar todas las dependencias del package.jsonnpm install
# Atajonpm i
# Solo dependencias de producción (para deploy)npm install --production# onpm install --omit=dev🗑️ 5. Desinstalar y Actualizar Paquetes
Section titled “🗑️ 5. Desinstalar y Actualizar Paquetes”Desinstalar paquetes
Section titled “Desinstalar paquetes”# Desinstalar un paquetenpm uninstall express
# Desinstalar múltiples paquetesnpm uninstall express mongoose
# Desinstalar paquete globalnpm uninstall -g typescriptActualizar paquetes
Section titled “Actualizar paquetes”# Ver paquetes desactualizadosnpm outdated
# Actualizar un paquete específiconpm update express
# Actualizar todos los paquetesnpm update
# Actualizar a la última versión (puede romper compatibilidad)npm install express@latest📜 6. Scripts de NPM
Section titled “📜 6. Scripts de NPM”Definir scripts
Section titled “Definir scripts”Los scripts permiten automatizar tareas comunes del proyecto.
{"scripts": { "start": "node src/index.js", "dev": "nodemon src/index.js", "build": "tsc && node dist/index.js", "test": "jest", "test:watch": "jest --watch", "lint": "eslint src/", "lint:fix": "eslint src/ --fix", "format": "prettier --write src/"}}Ejecutar scripts
Section titled “Ejecutar scripts”# Ejecutar scriptnpm run devnpm run buildnpm run test
# Scripts especiales (no necesitan 'run')npm start # equivale a npm run startnpm test # equivale a npm run test
# Ver todos los scripts disponiblesnpm runScripts con argumentos
Section titled “Scripts con argumentos”# Pasar argumentos a un scriptnpm run test -- --coveragenpm run build -- --watch
# El -- separa los argumentos de npm de los del script🎨 7. Crear Proyectos con Frameworks
Section titled “🎨 7. Crear Proyectos con Frameworks”Usando npm create / npx
Section titled “Usando npm create / npx”Usa npm create o npx para iniciar proyectos con frameworks populares:
# React (con Vite - recomendado)npm create vite@latest mi-app-react -- --template reactnpm create vite@latest mi-app-react-ts -- --template react-ts
# Vuenpm create vue@latest mi-app-vue
# Next.jsnpx create-next-app@latest mi-app-next
# Nuxtnpx nuxi init mi-app-nuxt
# Astronpm create astro@latest
# SvelteKitnpm create svelte@latest mi-app-svelte
# Angularnpx @angular/cli new mi-app-angular
# Express (API básica)npx express-generator mi-api
# Create React App (legacy, preferir Vite)npx create-react-app mi-app🔍 8. Buscar e Inspeccionar Paquetes
Section titled “🔍 8. Buscar e Inspeccionar Paquetes”Buscar paquetes
Section titled “Buscar paquetes”# Buscar paquetes en el registrynpm search express
# Ver información de un paquetenpm info express
# Ver todas las versiones disponiblesnpm view express versions
# Ver la última versiónnpm view express versionInspeccionar dependencias
Section titled “Inspeccionar dependencias”# Ver árbol de dependenciasnpm list
# Ver solo dependencias directasnpm list --depth=0
# Ver dependencias de producciónnpm list --prod
# Ver dónde está instalado un paquete globalnpm list -g --depth=0🔒 9. package-lock.json
Section titled “🔒 9. package-lock.json”¿Qué es?
Section titled “¿Qué es?”El package-lock.json registra las versiones exactas de todas las dependencias instaladas, garantizando instalaciones reproducibles.
Características
Section titled “Características”| Aspecto | Descripción |
|---|---|
| Versiones exactas | Guarda la versión específica de cada paquete |
| Árbol completo | Incluye dependencias de dependencias |
| Integridad | Hash SHA para verificar paquetes |
| Reproducibilidad | Mismas versiones en cualquier máquina |
Buenas prácticas
Section titled “Buenas prácticas”# SIEMPRE incluir en control de versionesgit add package-lock.json
# Para instalaciones limpias y reproduciblesnpm ci
# npm ci vs npm install:# - npm ci: Borra node_modules, instala exactamente lo del lock# - npm install: Puede actualizar el lock si hay cambios🧹 10. Limpiar y Solucionar Problemas
Section titled “🧹 10. Limpiar y Solucionar Problemas”Limpiar caché
Section titled “Limpiar caché”# Ver información del cachénpm cache ls
# Limpiar caché (forzado)npm cache clean --force
# Verificar integridad del cachénpm cache verifySolucionar problemas comunes
Section titled “Solucionar problemas comunes”# Reinstalar todas las dependenciasrm -rf node_modulesnpm install
# Instalación limpia (mejor opción)npm ci
# Verificar problemas de seguridadnpm audit
# Corregir vulnerabilidades automáticamentenpm audit fix
# Corregir vulnerabilidades (incluso con breaking changes)npm audit fix --force📊 11. Versionado Semántico
Section titled “📊 11. Versionado Semántico”Formato de versiones
Section titled “Formato de versiones”NPM usa Semantic Versioning (SemVer): MAJOR.MINOR.PATCH
| Parte | Cuándo incrementar | Ejemplo |
|---|---|---|
| MAJOR | Cambios incompatibles (breaking changes) | 1.0.0 → 2.0.0 |
| MINOR | Nueva funcionalidad compatible | 1.0.0 → 1.1.0 |
| PATCH | Corrección de bugs | 1.0.0 → 1.0.1 |
Rangos de versiones
Section titled “Rangos de versiones”| Símbolo | Significado | Ejemplo | Acepta |
|---|---|---|---|
^ | Compatible con minor | ^1.2.3 | 1.2.3 a <2.0.0 |
~ | Compatible con patch | ~1.2.3 | 1.2.3 a <1.3.0 |
* | Cualquier versión | * | Todas |
>= | Mayor o igual | >=1.2.3 | 1.2.3 en adelante |
| Exacta | Versión específica | 1.2.3 | Solo 1.2.3 |
{"dependencies": { "express": "^4.18.2", // 4.18.2 a <5.0.0 "lodash": "~4.17.21", // 4.17.21 a <4.18.0 "moment": "2.29.4", // Exactamente 2.29.4 "axios": ">=1.0.0" // 1.0.0 o superior}}📋 Comandos Esenciales - Resumen
Section titled “📋 Comandos Esenciales - Resumen”| Comando | Descripción |
|---|---|
npm init -y | Crear proyecto nuevo |
npm install | Instalar dependencias |
npm install paquete | Instalar paquete |
npm install -D paquete | Instalar como dev dependency |
npm install -g paquete | Instalar globalmente |
npm uninstall paquete | Desinstalar paquete |
npm update | Actualizar paquetes |
npm run script | Ejecutar script |
npm list --depth=0 | Ver dependencias instaladas |
npm outdated | Ver paquetes desactualizados |
npm audit | Verificar vulnerabilidades |
npm ci | Instalación limpia |
🐝