julio 18, 2020

¿Qué es npm? pequeña guía para principiantes

A continuación, responderemos a la pregunta ¿Qué es npm? Con una pequeña guía para principiantes y para aquellos entusiastas que han buscado respuestas.

Node.js, llegó al mundo arrasando desde 2009. Cientos de miles de sistemas se han creado con base en Node.js, y esto ha orillado a la comunidad de desarrolladores a considerar que «JavaScript se está comiendo al software».

Uno de los principales factores para el éxito de Node es NPM, que es un administrador que permite a los desarrolladores de JavaScript compartir paquetes útiles como lodash y momento de forma rápida y sencilla.

Recientemente NPM ha facilitado la publicación de más de 1.3 millones de paquetes con una tasa de descarga semanal de más de 16 mil millones. Estos números son fantásticos para cualquier herramienta de software. Así que ahora ahondaremos sobre qué es exactamente NPM.

¿Qué es el NPM?

NPM – o «Node Package Manager» – es el administrador de paquetes predeterminado para el tiempo de ejecución de JavaScript Node.js.

También se conoce como «Ninja Pumpkin Mutants», «Nonprofit Pizza Makers», y otros nombres aleatorios que puede explorar y probablemente contribuir a más en NPM –expansions.

NPM consta de dos piezas fundamentales:

  • Una herramienta CLI (interfaz de línea de comandos) para publicar y descargar paquetes
  • Un repositorio en línea https://www.npmjs.com/ que aloja paquetes de JavaScript

Para una explicación más destallada, podemos pensar en el repositorio npmjs.com como un centro de cumplimiento que recibe paquetes de productos de vendedores, donde están los autores de paquetes npm y se distribuyen estos productos a compradores (usuarios de paquetes npm).

Para facilitar este proceso, el centro de cumplimiento de npmjs.com emplea un ejército de wombats, o sea como los trabajadores (npm CLI) que serán asignados como asistentes personales para cada cliente de npmjs.com.

Package.json

Cada proyecto en JavaScript, ya sea Node.js o una aplicación de navegador, se puede definir como un paquete npm con su propia información de paquete, mientras que el package.json sirve para describir el proyecto.

Package.json se generará cuando se ejecute npm init para iniciar un proyecto JavaScript / Node.js, con los siguientes metadatos básicos, proporcionados por los desarrolladores:

  • Nombre: el nombre de su biblioteca / proyecto de JavaScript
  • Version: la versión de tu proyecto. Muchas veces, para el desarrollo de aplicaciones, este campo se descuida, ya que no hay una aparente necesidad de versionar bibliotecas de código abierto. Pero puede ser útil como fuente de la versión de implementación.
  • Descripción: la descripción del proyecto
  • Licencia: la licencia del proyecto

Npm scripts

package.json también admite una propiedad de scripts para ejecutar herramientas online de comandos que se instalan en el contexto local del proyecto. Por ejemplo, la parte de los scripts de un proyecto npm puede verse así:

{
«scripts»: {
«build»: «tsc»,
«format»: «prettier –write */.ts»,
«format-check»: «prettier –check */.ts»,
«lint»: «eslint src/*/.ts»,
«pack»: «ncc build»,
«test»: «jest»,
«all»: «npm run build && npm run format && npm run lint && npm run pack && npm test»
}
}

With eslint, prettier, ncc, jest no necesariamente están instalado como ejecutables globales sino más bien como locales para el proyecto dentro de node_modules / .bin /.

La reciente introducción de npx nos permite ejecutar estos comandos de ámbito de proyecto node_modules al igual que un programa instalado globalmente al prefijar npx … (es decir, npx prettier –write ** / *. Ts).

dependencies vs devDependencies

Estos dos elementos vienen en forma de objetos clave-valor con nombres de bibliotecas npm como la clave y sus versiones con formato semántico como un valor. A continuación, un ejemplo de la plantilla de acción TypeScript de Github:

{
«dependencies»: {
«@actions/core»: «^1.2.3»,
«@actions/github»: «^2.1.1»
},
«devDependencies»: {
«@types/jest»: «^25.1.4»,
«@types/node»: «^13.9.0»,
«@typescript-eslint/parser»: «^2.22.0»,
«@zeit/ncc»: «^0.21.1»,
«eslint»: «^6.8.0»,
«eslint-plugin-github»: «^3.4.1»,
«eslint-plugin-jest»: «^23.8.2»,
«jest»: «^25.1.0»,
«jest-circus»: «^25.1.0»,
«js-yaml»: «^3.13.1»,
«prettier»: «^1.19.1»,
«ts-jest»: «^25.2.1»,
«typescript»: «^3.8.3»
}
}

Las dependencies se instalan a través del npm installcomando con –savey –save-devflags. Están diseñados a utilizarse en entornos de producción y desarrollo / prueba respectivamente.

Es importante comprender los posibles signos que vienen antes de las versiones semánticas (suponiendo que haya leído sobre el major.minor.patchmodelo de semver ):

^: último lanzamiento menor. Por ejemplo, una especificación ^ 1.0.4 podría instalar la versión 1.3.0 si esa es la última de la serie principal 1.

~: última versión del parche. De la misma manera que ^ para versiones menores, la especificación ~ 1.0.4 podría instalar la versión 1.0.7 si esa es la última versión menor de la serie menor 1.0.

Todas estas versiones del paquete se documentarán en un archivo generado package-lock.json

package-lock.json

Este archivo describe las versiones de las dependencias utilizadas en un proyecto JavaScript npm. Si package.json es una etiqueta descriptiva genérica entonces package-lock.jsones es una tabla de ingredientes.

Al igual que generalmente no leemos la tabla de ingredientes de un producto, los desarrolladores package-lock.json no están obligados a leerlo línea por línea (a menos que estén desesperados por saber si funciona en sus máquinas.

package-lock.json usualmente es generado por el npm installcomando, y también lo lee la herramienta CLI de NPM con la intención de garantizar la reproducción de entornos de compilación para el proyecto npm ci.

¿Qué es npm?, pequeña guía para principiantes
Guía para principiantes

Leíste: ¿Qué es npm? pequeña guía para principiantes, te recomendamos: Recomendaciones para ilustraciones CSS complejas

Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode