Instalaciones globales de NPM

Instalación de paquetes de Node en el sistema operativo


Aunque lo más habitual es utilizar npm para instalar paquetes que son dependencias para un proyecto, también es posible instalar paquetes en el sistema de forma global sin necesidad de asociarlo a un proyecto concreto.

Esto es bastante usual en aplicaciones de linea de comandos donde queremos instalarlo como lo haríamos con apt-get en un sistema GNU/Linux para tener acceso al comando principal y utilizarlo a nivel de sistemas.

Instalar paquetes de forma global

Para instalar paquetes con NPM sin asociarlos a un proyecto deberemos utilizar el flag --global o -g. Esto indicará a NPM que el paquete debe ser instalado en el sistema y estará disponible para los usuarios del sistema, sin necesidad de tenerlo como dependencia del proyecto:

$ npm install -g parrotsay

Con esto, NPM habrá instalado todos los archivos necesarios en la ruta «prefijo» global, que habitualmente es /usr. De esta forma, todos los archivos del paquete parrotsay se guardan en /usr/lib/node_modules/parrotsay/, mientras que los archivos ejecutables se guardan en /usr/bin, más especificamente, un enlace simbólico al ejecutable de node de la primera carpeta mencionada.

Una vez instalado, podemos escribir lo siguiente para ejecutar parrotsay:

$ parrotsay lenguajejs.com

Lo que nos mostrará la siguiente salida:

parrotsay command NPM package

Cuidado con las instalaciones globales. A priori, puede parecer muy interesante instalar paquetes de forma global pero puede tener ciertas implicaciones. Si realizas una instalación global de un paquete asegurate de que:

A) Se trate de un paquete de línea de comandos.
B) El paquete es para uso individual y no requiere estar ligado a un proyecto.
C) Si el paquete se utiliza en un proyecto, cada usuario que descargue el proyecto debe instalarlo de forma manual, por lo que asegurate de tener una razón de peso para no asociarlo como una dependencia del proyecto.

En nuestro caso hemos instalado el paquete parrotsay, que simplemente es una utilidad de línea de comandos, que nos muestra el loro del meme en una terminal, al estilo de la famosa utilidad de Linux cowsay. Al ser una utilidad del sistema, que no tiene relación directa con un proyecto, es seguro instalarlo como paquete global.

Avisos de error (npm WARN)

En ciertas instalaciones de NPM, observaremos que nos aparecen errores (o más concretamente, warnings) similares a los siguientes. En general, son mensajes y avisos destinados al desarrollador del paquete, por lo que no implican error por parte del usuario al instalar el paquete, pero en algunos casos si puede serlo.

Entre los errores más comunes, podemos encontrarnos cosas como las siguientes:

npm WARN deprecated

Son errores que avisan que una de las dependencias del paquete que instalamos está marcada como obsoleta. El desarrollador del paquete debería eliminarla y utilizar otra para el mismo fin.

npm WARN notsup

Estos errores suelen aparecer cuando tenemos una versión de node o npm que no soporta alguna de las dependencias del paquete o simplemente estamos usando un sistema operativo donde no es necesaria.

npm WARN checkPermissions

Error de permisos. Es bastante frecuente tener este problema y normalmente es debido a que se ha utilizado sudo para instalar paquetes con NPM, algo que nunca se debería hacer. Veremos como solucionarlo en el siguiente capítulo: Problemas de permisos con NPM.

Ver paquetes globales instalados

Es posible que con el tiempo, no nos acordemos de los paquetes instalados de forma global en nuestro sistema. Una forma rápida y práctica para ver que paquetes tenemos instalados es utilizando el siguiente comando:

$ npm list -g --depth 0

/usr/lib
├── @11ty/[email protected]
├── @vue/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
  • El parámetro -g o --global nos muestra los paquetes globales
  • El parámetro --depth 0 indica que no muestre dependencias, sólo el paquete principal

De esta forma será muy sencillo determinar que paquetes queremos eliminar de nuestro sistema para, por ejemplo, hacer espacio en disco.

Desinstalar paquetes globales

En el caso de que no queramos continuar con un paquete global instalado, podemos desinstalarlo facilmente con el siguiente comando:

$ npm uninstall -g parrotsay

Esto eliminará el paquete por completo de nuestro sistema.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev