9 - Herramientas y funcionalidades avanzadas

Objetivo del tema

Explorarás utilidades avanzadas del ecosistema npm para optimizar tu flujo de trabajo: ejecución de paquetes con npx, organización de monorepositorios con workspaces, configuración de proxies y registros privados, personalización mediante .npmrc y una comparación práctica con gestores alternativos como Yarn y pnpm.

9.1 Uso de npx para ejecutar paquetes sin instalarlos

npx permite lanzar binarios publicados en npm sin instalarlos permanentemente. Es ideal para generadores de proyectos o herramientas que usarás de forma puntual.

# Ejecutar un generador sin instalarlo globalmente
npx create-react-app mi-app

# Probar la última versión de un CLI publicada en npm
npx @angular/cli ng version
  • Si el paquete existe en node_modules/.bin se reutiliza la versión local; de lo contrario, npx descarga una temporalmente.
  • Evita contaminar instalaciones globales y facilita probar versiones específicas con npx paquete@versión.
  • Para entornos offline, instala previamente el paquete en el proyecto o en una caché compartida.

9.2 Workspaces: manejo de monorepositorios

Los workspaces permiten manejar múltiples paquetes dentro de un mismo repositorio compartiendo dependencias y scripts. Se declaran en package.json o en un archivo independiente package-workspace.json.

{
  "private": true,
  "workspaces": [
    "packages/api",
    "packages/web",
    "packages/ui"
  ],
  "scripts": {
    "build": "npm run build --workspaces"
  }
}
  • Ejecuta npm install en la raíz para resolver dependencias de todos los paquetes y crear enlaces simbólicos locales.
  • Los comandos admiten el indicador --workspace <nombre> para operar sobre un paquete concreto.
  • Facilita compartir componentes, evita duplicar dependencias y simplifica la publicación de múltiples paquetes relacionados.

9.3 Configuración de proxies y registros privados

En entornos corporativos es habitual enrutar el tráfico a través de proxies o emplear registros privados. npm permite configurarlo mediante variables de entorno o entradas en .npmrc.

# Variables de entorno para proxies HTTP/HTTPS
setx HTTP_PROXY http://usuario:password@proxy.local:8080
setx HTTPS_PROXY http://usuario:password@proxy.local:8080

# Establecer un registry privado temporalmente
npm set registry https://registro.empresa.com/

Para una configuración persistente, añade los valores en el .npmrc de usuario o del proyecto. Puedes definir credenciales usando tokens con ámbito limitado para mayor seguridad.

9.4 Uso de .npmrc para personalizar configuraciones

El archivo .npmrc admite ajustes por usuario, proyecto o incluso nivel global del sistema. Algunos parámetros útiles son:

registry=https://registry.npmjs.org/
save-exact=false
init-author-name=Nombre Apellido
init-license=MIT
@tuempresa:registry=https://registro.empresa.com/
//registro.empresa.com/:_authToken=${NPM_TOKEN}
  • Los valores pueden interpolar variables de entorno (por ejemplo ${NPM_TOKEN}).
  • Usa npm config ls para inspeccionar la configuración efectiva y detectar conflictos.
  • Mantén un .npmrc dentro del proyecto para compartir ajustes comunes sin exponer credenciales sensibles.

9.5 Comparación con otros gestores de paquetes (Yarn, pnpm)

npm convive con otras soluciones populares. Elegir uno u otro depende de las necesidades del proyecto:

  • Yarn: ofrece instalaciones paralelas rápidas, Plug'n'Play para evitar node_modules y comandos orientados a monorepositorios (Yarn Workspaces).
  • pnpm: utiliza una caché de contenido direccionable (symlinks) que reduce el espacio en disco y evita duplicar dependencias entre proyectos.
  • npm: integrado en Node.js, amplia comunidad, soporte oficial y mejoras constantes (workspaces, npm ci, corepack para administrar gestores alternativos).

Evalúa factores como tiempos de instalación, compatibilidad con infraestructuras existentes y soporte en tu equipo antes de migrar entre herramientas.

Resumen didáctico

Con npx ejecutas herramientas bajo demanda, los workspaces centralizan monorepositorios, .npmrc y las variables de entorno permiten personalizar registries o proxies, y conocer alternativas como Yarn y pnpm te ayuda a escoger la mejor estrategia para cada proyecto.