¿Qué es NPM? JavaScript para principiantes
Abordamos un tema de JavaScript para principiantes para hablar de una de las herramientas más esenciales para cualquier tipo de proyecto con este lenguaje de programación. Se trata de NPM, el gestor de dependencias incorporado en NodeJS.
- ¿Qué es NPM (Node Package Manager)?
- Importancia de NPM en el desarrollo de JavaScript
- Instalación y configuración de NPM
- Instala y gestiona tus dependencias con NPM en un servidor VPS
- Prácticas habituales de uso de NPM
- Publicación y uso de paquetes en NPM
- Herramientas y características avanzadas de NPM
- Publica tus proyectos Node.js con NPM desde tu alojamiento web
¿Qué es NPM (Node Package Manager)?
NPM es una herramienta fundamental en el desarrollo con JavaScript. Corresponde con las siglas de Node Package Manager y consiste en un administrador de paquetes que permite a los desarrolladores de JavaScript trabajar con lo que llamamos dependencias. Las dependencias son todas aquellas librerías que usamos al desarrollar un programa y que nos permiten evitar hacer todo el trabajo desde cero.
El trabajo con las dependencias es muy amplio e incluye muchas cuestiones, como instalar, publicar y gestionar módulos en modo general. Todo eso lo podemos hacer asistidos por NPM.
Importancia de NPM en el desarrollo de JavaScript
NPM forma parte del ecosistema de NodeJS y lo obtenemos cuando instalamos esta plataforma de ejecución de JavaScript. Sin embargo, podemos usar NPM no sólo cuando desarrollamos con NodeJS sino también cuando desarrollamos en JavaScript para el navegador.
Gestión de paquetes y dependencias en proyectos JavaScript
Al desarrollar aplicaciones, ya sea con JavaScript o con la mayoría de los lenguajes modernos, rara vez se escribe todo el código desde cero. Por contra, los desarrolladores dependen de paquetes de código disponibles en la comunidad, que permiten realizar todo tipo de tareas comunes. Existen paquetes de software, también llamados packages, bibliotecas o librerías, para el tratamiento de innumerables cuestiones como la manipulación de fechas, la realización de solicitudes HTTP, el acceso a las bases de datos, etc.
NPM facilita la gestión de estos paquetes en las aplicaciones y no es una cuestión de calado menor, porque es habitual que unos paquetes dependan de otros y éstos a su vez de otros. De modo que, si no existiese npm podría darse el caso que usar una librería requeriría una cantidad enorme de trabajo hasta que se instalan todos sus requisitos. En cambio, NPM se encarga de rastrear qué módulos dependen de otros e instalarlos también, así como de mantenerlos actualizados cuando se requiera. Esto simplifica enormemente la tarea de mantener un proyecto actualizado, ya que no solamente tenemos que lidiar con cientos de librerías sino asegurarse que todas las dependencias estén en las versiones correctas y sean compatibles entre sí.
Pero antes de continuar aclaremos un par de conceptos básicos, porque estamos usando mucha terminología y no queremos que nadie se haga un lío.
¿Qué son los módulos?
Los módulos son básicamente archivos de código JavaScript que se pueden usar desde otros archivos. El trabajo con módulos nos facilita mantener cada cosa en su sitio y evitar tener un mismo archivo JavaScript con miles de líneas que requeriría una aplicación completa.
En el desarrollo de una aplicación o sitio web podemos tener decenas o cientos de módulos, siendo que unos son desarrollados por nosotros mismos y otros son paquetes de terceros.
¿Qué son los packages?
Los packages o paquetes son conjuntos de archivos de JavaScript que ofrecen una o varias funcionalidades y que se pueden agrupar en un proyecto independiente, que luego podremos usar desde varias aplicaciones.
Comunidad y ecosistema de paquetes de NPM
En JavaScript existe una enorme comunidad de desarrolladores que liberan miles y miles de paquetes de software que se pueden instalar mediante NPM. Además de permitir la instalación de estos paquetes, en el sitio npmjs.org podemos encontrar un repositorio de packages disponibles públicamente, realizados por cualquier desarrollador que decida aportar su software para que otras personas lo puedan usar.
Instalación y configuración de NPM
Ahora vamos a abordar una serie de prácticas básicas para el trabajo con NPM que debes de conocer, comenzando por su instalación.
Requisitos previos para usar NPM
Para usar NPM necesitas simplemente instalar Node.js. Node.js es una plataforma que permite ejecutar JavaScript en un ordenador, de manera independiente al navegador. Simplemente por el hecho de instalar Node tendrás disponible NPM en tu sistema.
Instalación de Node.js y NPM en diferentes sistemas operativos
La instalación de Node.js y NPM es bastante sencilla, aunque el procedimiento puede cambiar drásticamente dependiendo del sistema operativo que tengamos.
- Windows: Simplemente descargamos el instalador de Node.js desde el sitio web oficial (https://nodejs.org). Este instalador ya te ofrece todo lo que necesitas.
- MacOS: También puedes descargar un instalador, aunque habitualmente usamos Homebrew para instalar software o incluso librerías con nvm que nos permiten disponer de varias instalaciones de Node en distintas versiones.
- Linux: En Linux, la instalación de Node.js y NPM puede variar dependiendo de la distribución que tengamos. Pero generalmente lo más común es instalar estos programas vía los gestores de paquetes del sistema operativo.
Una vez instalado podemos verificar la instalación con los siguientes comandos:
node -v
Nos debe entregar la versión de NodeJS instalada.
npm -v
Nos mostrará la versión instalada de NPM.
Instala y gestiona tus dependencias con NPM en un servidor VPS
Una vez que tienes tu proyecto JavaScript listo para subir a un entorno en producción, un servidor VPS es una excelente opción para alojarlo. Gracias a NPM, puedes replicar el entorno de desarrollo de forma rápida y mantener todas las dependencias organizadas y actualizadas.
Primero, accede a tu VPS por SSH:
ssh usuario@tu-ip-del-servidor
Asegúrate de tener Node.js y NPM instalados. Puedes hacerlo con:
node -v npm -v
Si no están instalados, puedes usar un script de instalación como el de NodeSource para Ubuntu:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install nodejs
Una vez configurado tu entorno, sube tu proyecto al servidor mediante SCP o FTP, y ejecuta en el directorio del proyecto:
npm install
Este comando instalará todas las dependencias definidas en el archivo package.json
, asegurando que tu aplicación funcione igual que en desarrollo.
Para mantener el entorno limpio y funcional:
- Usa
npm update
para actualizar dependencias. - Elimina las no necesarias con
npm uninstall
. - Añade scripts personalizados para arrancar o testear tu proyecto.
- Usa herramientas como PM2 para mantener tu app Node.js en ejecución constante y monitorizada en el VPS.
Con esta gestión eficiente desde NPM, tu proyecto estará listo para funcionar de forma segura y optimizada en cualquier VPS de Arsys.
Prácticas habituales de uso de NPM
Inicialización de un proyecto con NPM
NPM permite crear los archivos necesarios para gestionar los desarrollos con Node o JavaScript en general, generando un archivo llamado package.json con metadatos del proyecto.
Para realizar esta inicialización, simplemente tienes que ejecutar el siguiente comando en la carpeta del proyecto:
npm init
Este comando lanzará un asistente en la consola que solicitará los datos para componer el archivo package.json.
Instalación de paquetes y dependencias con NPM
Una vez que tienes un proyecto inicializado, instalar paquetes es tan sencillo como lanzar comandos NPM.
Para instalar cualquier paquete necesitamos conocer si nombre y lanzar un comando como el siguiente:
npm install [nombre_del_paquete]
Este comando instalará el paquete indicado y lo agregará a la lista de dependencias manejadas por tu archivo package.json.
Actualización y eliminación de paquetes con NPM
NPM también te permite actualizar y eliminar paquetes fácilmente. Usaremos los siguientes comandos:
Para actualizar los paquetes de una aplicación de manera general:
npm update
Para actualizar un paquete en particular:
npm update [nombre_del_paquete]
Para eliminar un paquete, puedes usar el siguiente comando:
npm uninstall [nombre_del_paquete]
Publicación y uso de paquetes en NPM
Además de usar los paquetes de otros desarrolladores, cualquier persona puede publicar packages en NPM, para dejarlos disponibles para otros proyectos de la comunidad en general.
Creación y publicación de un paquete en NPM
Si has creado un módulo que quieres ofrecer públicamente lo debes subir al repositorio de NPM. Para ello primero necesitas una cuenta que obtienes de manera gratuita en el sitio de npmjs.org.
Luego debes iniciar sesión con tu cuenta desde la línea de comandos:
npm login
Posteriormente puedes publicar tu paquete con el comando:
npm publish
Ten en cuenta que debes haber inicializado previamente el package con el comando «init» comentado anteriormente y que debes haber completado toda la información de este paquete en su package.json, incluida la versión del package que estás publicando.
Uso de paquetes publicados en proyectos JavaScript
Una vez que un paquete ha sido publicado en NPM, otros desarrolladores pueden instalarlo y usarlo en sus proyectos, con los comandos de instalación que ya hemos comentado.
Herramientas y características avanzadas de NPM
Además de la gestión de las dependencias, podemos usar NPM para una cantidad enorme de tareas administrativas y de automatización. Vamos a ver algunas.
Scripts personalizados en el archivo package.json
El archivo package.json tiene una sección en la que puedes definir scripts personalizados que realizarán tareas comunes en tu proyecto. Por ejemplo, podrías tener un script que inicie tu aplicación, otro que ejecute tus pruebas, o arranque un servidor de desarrollo, por poner varios ejemplos.
La sección en concreto se define con la propiedad «scripts» del package.json.
'scripts': { 'start': 'wds --node-resolve --preserve-symlinks --watch --open demos/', 'build': 'vite build' },
Estos scripts luego se pueden ejecutar con el comando npm run seguido con el nombre del script, por ejemplo:
npm run build
Administración de versiones y control de dependencias
NPM tiene soporte integrado para el control de versiones semántico (SemVer, Semantic Versioning). Gracias a este soporte semántico podemos dejar implícito qué dependencias son compatibles con una versión de tu package.
NPM en entornos de producción y desarrollo
Cuando instalamos software mediante NPM podemos distinguir entre dependencias de desarrollo y dependencias de producción.
- Las dependencias de desarrollo son aquellas que sólo se necesitan durante la etapa de desarrollo. Por ejemplo el servidor de desarrollo que levantamos para ver el proyecto en funcionamiento.
- Dependencias de producción se refiere a todas aquellas que se necesitan para ejecutar la aplicación en el entorno de servidor.
Al instalar dependencias NPM entiende siempre que son dependencias de producción. Sin embargo, podemos indicar que solo las necesitamos para desarrollo con el flag –save-dev.
install vite --save-dev
Y con esto terminamos el conocimiento de JavaScript para principiantes que necesitas para trabajar con NPM. Una herramienta esencial que necesitarás en todo tipo de proyectos JavaScript, tanto frontend como backend.
Publica tus proyectos Node.js con NPM desde tu alojamiento web
Además de gestionar dependencias, NPM también te permite publicar tus propios paquetes. Si desarrollas utilidades, módulos o librerías en tus proyectos Node.js y quieres compartirlas con otros desarrolladores o reutilizarlas, puedes subirlas al registro oficial de NPM.
1. Prepara tu paquete
Asegúrate de que tu proyecto incluya al menos:
- Un archivo
package.json
con los camposname
,version
ymain
. - Código bien estructurado en módulos reutilizables.
- Documentación básica (
README.md
), ideal para facilitar el uso.
2. Accede a tu hosting o VPS
Si estás trabajando desde un alojamiento de Arsys, puedes conectarte vía SSH o usar tu entorno local sincronizado con el servidor.
Regístrate en NPM si no lo has hecho:
npm login
Introduce tu usuario, contraseña y correo electrónico.
3. Publica el paquete
Desde el directorio raíz de tu proyecto:
npm publish
Esto subirá tu paquete al registro público de NPM. Si se trata de un proyecto privado y quieres mantenerlo solo para ti o tu equipo, puedes usar:
npm publish --access=restricted
4. Usa el paquete desde otros proyectos
Una vez publicado, puedes instalarlo desde cualquier otro entorno con:
npm install nombre-del-paquete
Esto es especialmente útil si estás trabajando con varios VPS o aplicaciones web en distintos servidores y necesitas mantener una coherencia en el código o funcionalidades compartidas.
Publicar tus proyectos desde tu alojamiento web o VPS no solo mejora tu flujo de trabajo, sino que potencia la reutilización, facilita actualizaciones y promueve la colaboración dentro del ecosistema JavaScript.