Logo Studenta

Clase 5 - Administrador de paquetes NPM

¡Estudia con miles de materiales!

Vista previa del material en texto

Clase 5: Administrador de paquetes NPM
Repasando nuestra herramienta de trabajo: Node Js
Sobre el corazón de nuestros proyectos
Node js no es sólo un módulo más o una librería para trabajar. Sino que es un entorno de desarrollo completo sobre el cual viven y se ejecutan nuestros programas de javascript
Surgió de la necesidad de ejecutar javascript fuera del navegador, y ha crecido hasta convertirse en uno de los elementos principales para el desarrollo web.
Cuenta con el mismo motor V8 de Google Chrome, el cual permite convertir el código javascript a código máquina para poder ser procesado correctamente. 
Además, cuenta con muchas funcionalidades internas del mismo lenguaje javascript gracias a sus ajustes con ECMAScript.
El poder de Node js en backend
Node js fue pensado de manera primaria para backend, lo cual significa que su desarrollo se basó pensando en éste en primera instancia. Su sistema de desarrollo basado en eventos, le permite al desarrollador construir aplicaciones ligeras, rápidas e incluso en tiempo real.
Esto sin obviar que el soporte de esta maravilla tecnológica se basa en utilizar y procesar Javascript, el cual cuenta con una infinidad de funciones y estructuras que permiten resolver diferentes problemas día con día. 
Módulos nativos de Node js
Conforme necesitamos programas más complejos, necesitamos operaciones más complejas, y conforme necesitamos operaciones más complejas, necesitamos herramientas más útiles.
Es por eso que, desde que instalamos Nodejs en nuestro computador, contamos ya con una serie de módulos nativos (es decir, que ya viven dentro de él), para poder resolver este tipo de tareas de manera eficiente y sin tener que reprogramar todo (recuerda no reinventar la rueda)
Algunos de los módulos nativos más importantes de Node js
¡Importante! Recuerda que utilizamos soluciones de terceros para hacer nuestro trabajo mejor. Utilizar un módulo que nos permita solucionar un problema previo, permite concentrarnos en el problema actual.
Manejando módulos de terceros: NPM
¿Qué es NPM?
NPM refiere a las siglas “Node Package Manager”, El cual refiere a un manejador de paquetes de Node. Éste permite que la comunidad de desarrolladores puedan crear sus propios módulos, para poder subirlos a la nube y así otros desarrolladores puedan utilizarlos. 
Para el trabajo de paqueterías, tendremos un archivo en nuestro proyecto llamado package.json
Puedes consultar la página oficial de NPM
Package.json
¿Qué es package.json?
package.json es un archivo que generamos dentro de nuestros proyectos, el cual contendrá distintas especificaciones del mismo, cosas como:
· El nombre de tu proyecto
· La versión de tu proyecto
· Algunos scripts para correr el proyecto
· ¿de qué depende el proyecto?
Dependencias
Cuando nuestro proyecto necesita utilizar dependencias de terceros a partir de npm, se añade un nuevo campo a nuestro package.json llamado “dependencies” el cual contendrá los módulos que tenemos instalados en ese proyecto y, por lo tanto, indica que el proyecto necesita de esas dependencias instaladas para poder correr correctamente.
Instalando nuestra primera dependencia
Para trabajar con dependencias necesitamos:
· Paso 1: tener un proyecto vacío
Nuestros proyectos deben ser entornos aislados que no obstruyan con otros proyectos. De manera que necesitaremos tener una carpeta vacía
· Paso 2: Correr el comando npm init
El comando npm init permitirá crear un package.json dentro de la carpeta donde estés. Asegúrate de estar dentro de la carpeta en la que trabajarás.
Este nos preguntará por las especificaciones como:
· nombre
· versión
· descripción
· etc.
Finalmente, se nos generará un package.json con las especificaciones definidas
con npm init -y se puede dar skip a los pasos de selección, indicando las precauciones que hay que tomar al usar npm init -y
· Paso 3: Correr el comando npm install
Una vez generado nuestro package.json, con el comando npm install nombre_del_modulo podremos hacer la instalación del módulo que necesitemos. En este ejemplo instalamos moment el cual sirve para manejar fechas y horas de manera eficiente.
Una vez instalado, se generará una carpeta node_modules (donde vivirá moment), y se agregará la dependencia de moment a mi package.json
· Paso 4: Utilizar el módulo
Una vez que todo ha sido instalado, podemos importar el módulo de la misma manera que lo hacemos con nuestros módulos nativos.
Instalaciones globales e instalaciones locales
¿Global o local?
Instalar una dependencia de manera local significa que ese módulo instalado pertenecerá y se utilizará sólo dentro de ese proyecto. Ello implica que, si quisiera utilizar la misma dependencia en otro proyecto, tendría que volver a hacer la instalación, ya que no son compartidas.
Por otra parte, instalar una dependencia de manera global implica instalar el módulo para todos los proyectos, evitando la necesidad de instalar cada vez que hagamos un proyecto nuevo. Para instalar de manera global, sólo colocamos la flag -g
Lo malo de las instalaciones globales
Si instalamos una dependencia global, estamos delimitando a todos nuestros proyectos a utilizarla con la versión instalada. Esto quiere decir que, si instalé mi dependencia global en su versión 1.0.0, todos los proyectos utilizarán la versión 1.0.0 . 
¿Y si la dependencia se actualiza más adelante a su versión 2.0.0 y quiero utilizar sus últimas características, qué pasará con todos los proyectos que corrían sólo con la versión 1.0.0? Se vuelven obsoletos (deprecated) y hay que actualizar el código de todos éstos, lo cual supone un problema muy engorroso. 
Versionado de dependencias
Como cualquier programa, este no suele quedarse estático en una única versión. Cada vez que hacemos un cambio a nuestro código, estamos cambiando la versión del mismo. 
Pasa lo mismo con lo que instalamos, todas las dependencias de terceros están regidas por versiones.
Una versión define puntos específicos en los que un código tiene ciertas características, ciertas sintaxis, ciertas funcionalidades, e incluso ciertos errores.
Manejo de versiones en NPM
Las versiones se basan en 3 elementos básicos:
· Versiones mayores (primer dígito): Hace referencia a cambios grandes, tanto que ya no son compatibles con otras versiones anteriores.
· Versiones menores (segundo dígito): Hace referencia a cambios en ciertas características y funcionalidades que no afecten a versiones anteriores, es decir, podemos actualizarlo sin afectar la estructura del proyecto.
· Parches (último dígito): Hace referencia a bugfixes o manejo de defectos del código actual. No se está cambiando nada estructuralmente hablando, sólo estamos arreglando cosas.
Política de actualizaciones de dependencias
Operadores para actualizar versiones
En nuestro package.json podemos colocar operadores que permitan tener un mejor control de las versiones:
· El operador ^ Sirve para instalar la versión menor más alta, esto significa que no actualizará a alguna versión mayor, protegiendo así a nuestro código de incompatibilidades
· El operador ~ Sirve para instalar sólo los parches, lo cual significa que no altera las versiones menores, sólo las ligeras correcciones a bugs del código
· Si no colocamos ningún operador, se instalará la versión exacta que hayamos colocado.
NOTA: Sabemos que hay más operadores de control de versiones, sin embargo, mencionamos estos dos para no saturar de información a los estudiantes y que sea entendible con lo que se ha mencionado.
Comandos para actualizar en NPM
es un comando que leerá las dependencias instaladas en nuestro package.json y, según el operador que hayamos colocado, nos indicará qué es lo que nos “conviene”. También nos indica cuál es la última versión encontrada en internet, en caso de que nos interese.
Para poder llevar a cabo la actualización, utilizaremos el comando el cual se encargará de realizar los cambios que indicamos.

Continuar navegando

Materiales relacionados