Cargando



NPM: Gestionar paquetes JavaScript

En este tutorial conocerás cómo funciona el gestor de paquetes de Node.js llamado NPM, cómo realizar instalaciones de paquetes en ámbito local y global, manejar las dependencias y versiones de tus proyectos.


mar 04 2016 15:06
Profesional
mar 04 2016 15:11

npm-0.jpg

 

Introducción NPM

 

¿Qué es NPM?
NPM (Node Package Manager, por sus siglas en inglés) es un gestor de paquetes para JavaScript, es el predeterminado para node.js. Cuando instalas node también se instala NPM. ¿Y qué quiere decir esto? Pues que a través de NPM podremos instalar y gestionar los paquetes para nuestras aplicaciones.

 

Cuando usamos Node.js rápidamente tenemos que instalar módulos nuevos (librerías) ya que Node al ser un sistema fuertemente modular viene prácticamente vacío. Así que para la mayoría de las operaciones deberemos instalar módulos adicionales. Esta operación se realiza de forma muy sencilla con la herramienta NPM.

 

¿Cómo instalar Node.js?
Para instalar Node.js lo primero que debemos hacer es entrar en la página web oficial:

 

https://nodejs.org/

 

Y descargar el instalador acorde a nuestro sistema operativo.

 

 

Al descargar el archivo de instalación, simplemente hacemos doble clic sobre él y seguimos las indicaciones del asistente de instalación de Node.js.

 

Una vez instalado para los usuarios de Windows, se podrá acceder a la consola de node.js desde la barra de inicio, como lo muestra la siguiente imagen:

 

 

Los usuarios de Mac deberán abrir el terminal de su sistema operativo como lo muestra la siguiente imagen:

 

 

Para comprobar que está instalado correctamente, ejecutamos el siguiente comando en nuestro terminal:

node
(Consola Windows/ Linux / Terminal OS X)

 

Presionamos Enter e ingresamos la siguiente línea:

Console.log(‘Node.js se instaló correctamente’);
(Consola Windows / Linux / Terminal OS X)

 

Al presionar Enter, nos mostrará el mensaje “Node.js se instaló correctamente”. Para ver la lista de comandos permitidos por node.js, ingresamos el comando .help como se muestra en la siguiente imagen:

 

npm-4.jpg

 

Para visualizar la versión NPM instalada, ejecutamos el siguiente comando:

npm -v
Lo cual dará como resultado lo siguiente:

 

npm-5.jpg

 

Gestor de paquetes

El gestor de paquetes NPM, es un poco distinto a otros gestores de paquetes que podemos conocer, porque los instala localmente en los proyectos. Es decir, al descargarse un módulo, se agrega a un proyecto local, que es el que lo tendrá disponible para incluir. Aunque también existe la posibilidad de instalar los paquetes de manera global en nuestro sistema.

 

Comenzando un nuevo proyecto

 

Cuando comenzamos un nuevo proyecto usando node.js es necesario crear un archivo llamado package.json. Éste es una especie de manifiesto que a su vez contiene el listado de todas las dependencias que usará tu proyecto

 

Uso de package.json


La mejor manera de gestionar los paquetes instalados localmente es crear un archivo package.json, esto nos permite:
  • Documentar qué paquetes usa nuestro proyecto.
  • Especificar qué versión de paquete específica usará nuestro proyecto.
  • Nos permite de manera fácil compartir nuestras dependencias con otros desarrolladores.

 

Requisitos:

 

Un archivo package.json debe tener como mínimo:

 

1. Nombre:

  • Todo en minúscula.
  • Una palabra sin espacio.
  • Guión y guión bajo están permitidos.

 

2. Versión:

 

Ejemplo de una package.json:

{
  "Name": "paquete_proyecto",
  "Versión": "1.0.0"
}
Si deseas generar un nuevo package.json, existen 2 formas de hacerlo:

 

1. Cargar un package.json predeterminado: Desde la consola ejecutamos la siguiente línea de comando.

npm init --yes
Lo cual dará como resultado lo siguiente:

 

npm-6.jpg

 

Para modificar esta configuración, simplemente abrimos el archivo creado con algún editor de texto y modificamos los atributos que deseamos.

 

2. Crear un package.json con el asistente: En la consola ejecutamos el siguiente comando.

npm init
El asistente te preguntará qué deseas agregar en cada atributo, dando como resultado lo siguiente:

 

npm-7.jpg

 

Instalación de dependencias


Desde la página web https://www.npmjs.com/ podrás encontrar cientos de proyectos; los cuales están posicionados de acuerdo a los diferentes criterios (número de descargas, popularidad…). Desde la página web es la forma más rápida, sin embargo NPM también tiene un parámetro search para la búsqueda de paquetes. Para realizar esto, debes ejecutar la siguiente línea de comando:

 

Instalación Local

Una vez definido el archivo package.json, podrás agregar en él las dependencias y agregar una lista de todo lo que necesites:
"dependencies": {
  "express": "*",
  "grunt": "*",
  "bower": "*"
}
El cual deberá quedar de la siguiente manera:

 

npm-8.jpg

 

Instalar los paquetes listados en package.json
Para instalar los paquetes listados en package.json y sus dependencias, deberás estar posicionado en el directorio donde se encuentra dicho archivo y ejecutar la siguiente línea de comando:
npm install

npm-9.jpg

 

 

Instalar paquetes
También podrás instalar nuevos paquetes y guardarlos desde el terminal, ejecutando lo siguiente:
npm install –-save nombre_paquete_nuevo

 

Desinstalar paquetes
Desinstalar paquete y borrarlo del package.json:
npm uninstall –-save nombre_paquete

 

Instalar el paquete directamente de un repositorio Git
npm install git://github.com/blured/mipaquete.git

 

Instalar una versión específica de un paquete
npm install algunpaquete@1.1.0

 

Es importante recalcar que este método de instalación local significa que sus archivos serán almacenados y estarán disponibles solo dentro del directorio de su proyecto.

 

Instalación Global

Otra forma de instalar paquetes es haciéndolo de forma global. Ésta es comúnmente usada para paquetes que proveen funcionalidad desde la línea de comando como son grunt, bower, yeoman, entre otros.

 

Tomemos como ejemplo el paquete JSHint, el cual es un analizador de código JavaScript que nos permite mostrar puntos en el que tu código no cumpla unas determinadas reglas establecidas de “código limpio“. Para instalar el mismo globalmente, ejecutamos el comando install agregando el atributo –g y con privilegio root (para usuarios Mac y Linux).

sudo npm install -g jshint
npm install -g jshint

npm-10.jpg

 

Para confirmar su instalación, basta con ejecutar su comando para evaluar algún archivo JavaScript en busca de errores. Como nuestra instalación fue global, desde cualquier ubicación podremos ejecutar Jshint, indicando la ruta donde se encuentre nuestro archivo JavaScript. Ejemplo:

jshint proyecto\MiApp\www\js\index.js
Dando como resultado un error en nuestro archivo JavaScript.

 

 

npm-11.jpg

 

Para conocer la carpeta en la que son guardadas todas estas librerías con ámbito global, podemos hacer uso del comando prefix y del marcador global -g, de la siguiente manera:

npm prefix -g
En una terminal OS X dará el siguiente resultado:

 

 

npm-12.jpg

 

En el command prompt de Windows se muestra la ruta, teniendo como única variable, el nombre de la carpeta del usuario que hizo la instalación. En este caso sería “Zhock”:

 

npm-13.jpg

 

En Windows, NodeJS no tiene definida como global la carpeta anterior para la inclusión de sus librerías mediante require. Por lo que si intentamos incluir una librería global, obtendremos el error “Error: Cannot find module”.

 

Para solucionarlo deberemos definir la variable del sistema NODE_PATH, dándole el valor de la ruta global de NPM y añadiéndole la carpeta \node_modules\ al final.

 

Como pudimos ver, en Windows 7 la ruta de instalación global de NPM es:

C:\Users\USER\AppData\Roaming\npm\
Por lo que el valor de NODE_PATH será:
C:\Users\USER\AppData\Roaming\npm\node_modules\
O lo que es lo mismo:
%APPDATA%\npm\node_modules\

 

 

Gestión de las dependencias

NPM permite gestionar las dependencias de tus proyectos y las versiones que necesitas. Como es sabido, los proyectos de código abierto se mueven activamente y cambian frecuentemente de versión. El package.json puede ser configurado para controlar este tipo de cambios.

 

Los números de versión normalmente contienen 3 elementos:

  • Versión principal cuando rompe con funcionalidades anteriores, por ejemplo: 2.0.0
  • Versión menor con nuevas características que no rompen las existentes, por ejemplo: 1.1.0
  • Lanzamiento del parche con correcciones de errores y otros cambios menores, por ejemplo 1.0.1

 

Definir versiones de los paquetes


Digamos que comienzas a desarrollar con ciertas versiones de paquetes. Puedes actualizarlos y aun así mantener la compatibilidad especificando el rango de cambios aceptados.
"dependencias" :  { 
  "Package1" :  "1.0.0" ,	 // acepta solamente la versión 1.0.0 
  "envase2" :  "1.0.x" , 	// cualquier versión de revisión en la versión 1.0 
  "Package3" :  "*" ,	   // última versión, no se recomienda 
  "Package4" :  "> = 1.0.0" ,	    // cambios después 1.0.0 
  "package5" :  "<1.9.0" ,		 // nada menos que 1.9.0 
  "package6" :  " ~ 1.8.0 " ,    // abreviatura de> = 1.8.0 <1.9.0 
  " package7 " :  " ^ 1.1.0 " , // abreviatura de> = 1.1.0 <2.0.0 
  " package8 " :  " último " ,  // nombre de la etiqueta de versión más reciente 
  "package9" :  "" ,   // igual que * es decir, la última versión 
  "packageX" :  "<1.0.0 ||> = 2.3.1 <2.4.5 ||> = 2.5.2 <3.0.0 "   
}
Nota
Si no está seguro qué versión utilizar, agregue el comodín * y ejecute el comando npm update –save, el cual veremos más adelante en este tutorial.

 

Comando:

npm update --save

Actualizar paquetes


Para ver todos los paquetes instalados localmente, utilice el comando ls y añada el atributo –l para una descripción breve. Para visualizar los paquetes instalados globalmente agregue el atributo –g.
npm ls -l
Para chequear qué paquete puede ser actualizado local y globalmente, ejecute lo siguiente:
npm outdated 
npm outdated -g --depth=0
Para llevar localmente un paquete a una versión mayor a la actual, ejecute lo siguiente:
npm update
Para realizarlo globalmente, agregue el atributo -g

 

Manejando Caché


Cuando NPM instala un paquete, éste mantiene una copia para una próxima vez que desees instalar el paquete sin necesidad de conexión a Internet. Estas copias son almacenadas en el siguiente directorio por defecto:
Posix(Linux, Os X…):   ~/.npm  
Windows:   %AppData%/npm-cache
Si deseas visualizar en qué directorio está almacenando el caché NPM, simplemente ejecuta la siguiente línea de comando:
npm config get cache
Este directorio suele llenarse con paquetes viejos y que ya no utilizamos, es por esto que se recomienda limpiar periódicamente con la siguiente línea de comando:
npm cache clean


¿Te ayudó este Tutorial?


1 Comentarios

Gracias, es un tutorial muy bien desarrollado.

saludos

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X