Lineamientos para la gestión de paqueteria en NPM
Es el acronimo de "Node Pakage Manager" y es el gestor de libreria Javascript mas grande que existe.
Nos brinda informcion sobre las versieones, mnetenimento, problemas comunes, estado actual de la libre y mucha iformacion mas.
Siempre es recomendable revisar la informacin de una libreria en NPM para conocer su estado actual
Para instalar NPM se debe descargar la version LTS (acronimo de "Long Term Support") de NODE, el cual es un entorno para a ejecucion de JavaScript en el cual se incluye NPM.
La descarga de node se puede realizar desde el siguiente link:
Al tener instlado NPM se puede efectur la configurcio global de las crecenciales de autor que seran utilizadas para la creacion de los futuros proyectos mediante los siguientes comantos:
> npm set init.author.email "example-user@example.com"
> npm set init.author.name "example_user"
> npm set init.license "MIT"
Siempre que se inicie un nuevo desarollo es recomendable generar un proyecto, de esta forma se peduran las configuraciones, archivos de dependencias y librerias que informan a otros desarrolladores de lo que se ha trabajado.
Estas configuraciones se veran reflejadas en el archivo package.json que se creara luego de la ejecuion del comando.
Para generar un proyecto con NPM se utiliza el siguiente comando:
npm init
Adicional generar un proyecto de forma rapida de puede usar la bandera "-y", esto permitira la creacion del proyecto utilizando los valores por defecto configurdos previamente (autor, email, licencia) un ejemplo del comando se muestra a continuacion:
npm init -y
Al instalr un paquete o libreria usando NPM permite descargar dicha libreria desde los respositorios de NPM hasta de nuesto entorno local, eso se reliza mediante el siguiente comando:
npm install {pk-name}
Sin embargo se debe conciderar que las instalaciones pueden incluir algunas banderas como son las siguientes:
-
--save Permite especificar que el parquete que se esta instalando es necesario para ambiente productivo del proyecto y debe estar presente para el correcto funcionamiento del mismo
-
--sabe-dev Permite especificar que el parquete que se esta instalando es necesario para ambiente de desarrollo. esto tampbien puede ser especificdo por la bandera aberbiada -D
-
-g Permite especificas que el paquete se instlar de manera global para todos los proyectos de la maquina local, en caso de no especificar esta bandera la instalacion se realizara en un costexto local solo para el proyecto actual.
-
-f Permite forzar la instalacion de un paquete
Para revisar los pauetes intaladod de forma global podemos usar el siguiente comando (se utiliza "depth 0" para limitar el en el arbol de dependencia que sera motrado)
npm list -g --depth 0
Tmbien es posible simular la instalacion de un paquete (sin realmente instalar nada en computador) mediante el siguiente comando:
npm install {pk-name} --dry-run
En caso de ser necesario se puede efectuar la instalacion de una version especifica del paquete usando la siguiente estrctura de la sentencia:
npm install {pk-name}@{specific vercion}
Ejemplo:
npm install json-server@0.15.0
Ademas se destaca que todos los paquetes instalados o cambios relaizados se veran reflejados en el archivo package.json y en caso que el proyecto fuera migrado a otro computador se pueden volver a instalr todas la dependiencias indicadas en este archivo mediante el siguiente comando:
npm install
Finalmente luego de realizada la instalacion de los pquetes tambien es necesario destacar que si se observn los archivos del proyecto se puede constarar que se ha creado la carpeta "node_modules" dentro de la ruta donde se ejecdeuto el comando, en esta carpeta es donde se ubicara el codigo de todos los paquese que se vayan instalando.
Revisar que paquetes disponen de nuevas versiones
npm outdate
Para ver un output más detallado
npm outdate --dd
Actualizar los paquetes que no están en la ultima versión
npm update
Actualizar un paquete especifico
npm install json-server@latest
Eliminar un paquete de node_modules y del archivo package.json
npm uninstall json-server
Desinstalar un paquete de todo node_modules pero no del archivo package.json
npm uninstall webpack --no-save
Estandar de versionado
Si se usa el ^ como simbolo antes de las versiones se asegura que la libreria se actualizara solo cambio menores y fix
Si se usa el simbolo ~ antes de las versiones se asegura que la libreria se actulizara solo los fix
Si no se pone ningun simbolo antes de las versiones se asegura que se mantendra la misma version y nunca se actualizara
Los scripts NPM: Son comandos que podemos establecer para poder ejecutar desde la consola. Estos nos van a dar una serie de salidas según sea el caso.
Podemos crear la cantidad de scripts que necesitemos. Estos scripts van a poder correr de forma nativa dentro de nuestra terminal.
Usar bandera --dd para poder ver detalles sobre todo cuando ocurren errores en compilacion
Para eliminar cache de compilaciones pasadas o instalaciones pasadas
npm cache clean --force
Verificar el cache de NPM
npm cache verify
Revisar librerias con problemas se seguridad
npm audit
Obtener el analisis de vulnerabilidades en formato JSON
npm audit --json
Arreglas todo el conjunto de vulnerabilidades
npm audit fix
herramienta que garantiza que estemos siempre actualizados con nuestras dependencias del proyecto y es snyk.io
Para la creacion del paquete debemos ejecutar el siguiente flujo:
- Se crea el archivo index.js en la carpeta src, con el siguiente codigo:
// Se declara el arreglo
const messages = [
"David",
"Diana",
"Ana Maria",
"Isabela",
"Antonio",
"Norma"
]
//Crear función para enviar aleatoriamente los nombres del arreglo
const randomMsg = () => {
const message = messages[Math.floor(Math.random()*messages.length)]
console.log(message)
}
// Exportar como un módulo
module.exports = { randomMsg }
- Se debe crear una carpeta bin donde se crea ele archivo global.js (Configuración que se necesita)
#!/usr/bin/env node
// se va ejecutar dentro de bash
//Variable que llama la funcion que exportamos
let random = require('../src/index.js')
//Ejecuto la funcion
random.randomMsg()
- Modificar el package.json y coloco la configuración de bin que se necesite
"bin": {
"random-msg": "./bin/global.js"
},
"preferGlobal": true
Para validar se puede instalar localmente con el siguiente comando:
npm link
Alternativamente si se realizan cambios en el paquete, este tambien se puede instalar usando la ruta disica del archivo mediante el siguiente comando (depende de cada ruta donde se tenga el proyecto):
npm install -g ~/Estudio/GestionDeDependenciasYPaquetesConNPM/random-messages/
Para ejecutar el paquete se usa el siguiente comando en terminal (depende del nombre que le fue asigndo al paquete):
random-msg
Para publicar es necesario contar con una cuenta en NPM, esta cuenta puede ser creada desde el siguiente link:
Luego de creada la cuenta se deben seguir los siguientes pasos para publicar el paquete:
- Login en NPM mediante el siguiente comando:
npm login