{"id":218,"date":"2023-04-16T11:55:25","date_gmt":"2023-04-16T14:55:25","guid":{"rendered":"https:\/\/danielsegovia.com\/plataforma\/?p=218"},"modified":"2023-08-11T09:53:38","modified_gmt":"2023-08-11T12:53:38","slug":"21-node-js-npm","status":"publish","type":"post","link":"https:\/\/danielsegovia.com\/plataforma\/21-node-js-npm\/","title":{"rendered":"21 &#8211; Node.js &amp; NPM"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Continuamos con el curso de Node.js. Ya llevamos m\u00e1s de 20 clases juntos, y estoy realmente impresionado por su dedicaci\u00f3n y entusiasmo en aprender m\u00e1s sobre el mundo de la programaci\u00f3n en Node.js.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoy vamos a sumergirnos en un tema fundamental para el desarrollo en Node.js: NPM, que significa \u00abNode Package Manager\u00bb (Administrador de paquetes de Node). NPM es como una caja m\u00e1gica llena de herramientas incre\u00edbles que hacen que nuestro trabajo sea m\u00e1s f\u00e1cil y eficiente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es NPM?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NPM es el mejor amigo de todo desarrollador de Node.js. Es una herramienta que nos permite instalar, compartir y administrar paquetes de c\u00f3digo reutilizable, tambi\u00e9n conocidos como \u00abm\u00f3dulos\u00bb, para nuestros proyectos. En otras palabras, es una enorme colecci\u00f3n de c\u00f3digo creado por la comunidad, disponible para que todos podamos usarlo en nuestros propios programas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfSe imaginan tener que escribir todo el c\u00f3digo desde cero cada vez que comenzamos un nuevo proyecto? Ser\u00eda agotador, \u00bfverdad? Pero gracias a NPM, podemos acceder a miles de paquetes \u00fatiles y ahorrar un mont\u00f3n de tiempo y esfuerzo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Iniciar un proyecto con npm init<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Comencemos por el principio. Antes de sumergirnos en el mundo de los paquetes y las dependencias, necesitamos un proyecto. Para eso, usaremos el comando npm init. Es como plantar la semilla para que nuestro proyecto crezca.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al ejecutar npm init, nos guiar\u00e1 a trav\u00e9s de un asistente interactivo. Podremos proporcionar informaci\u00f3n como el nombre del proyecto, la versi\u00f3n, el autor, la descripci\u00f3n y m\u00e1s. El asistente generar\u00e1 autom\u00e1ticamente un archivo especial llamado package.json. Este archivo es el coraz\u00f3n de nuestro proyecto, y en \u00e9l se registrar\u00e1 toda la informaci\u00f3n relevante sobre nuestras dependencias, scripts y configuraciones. \u00a1Es como un pasaporte para nuestro proyecto en el mundo de Node.js!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"630\" src=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-2-1024x630.png\" alt=\"\" class=\"wp-image-649\" srcset=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-2-1024x630.png 1024w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-2-300x185.png 300w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-2-768x473.png 768w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-2.png 1071w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Archivo package.json y package-lock.json<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El archivo package.json es crucial para cualquier proyecto de Node.js. Contiene informaci\u00f3n vital sobre nuestro proyecto, como las dependencias que necesita para funcionar correctamente. Adem\u00e1s, aqu\u00ed es donde almacenamos nuestros scripts personalizados que nos permiten hacer cosas interesantes con nuestro c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por otro lado, tenemos el package-lock.json, que es un archivo creado autom\u00e1ticamente cuando instalamos paquetes con npm install. Este archivo es muy importante porque nos asegura que, si compartimos nuestro proyecto con otros desarrolladores o lo movemos a otro lugar, se instalar\u00e1n exactamente las mismas versiones de las dependencias. Esto evita problemas de compatibilidad y mantiene nuestro proyecto estable y confiable.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"916\" height=\"477\" src=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-4.png\" alt=\"\" class=\"wp-image-652\" srcset=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-4.png 916w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-4-300x156.png 300w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-4-768x400.png 768w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gesti\u00f3n de paquetes con NPM<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que tenemos nuestro proyecto en marcha, lleg\u00f3 el momento de a\u00f1adir funcionalidades utilizando paquetes de NPM. Para instalar un paquete, solo necesitamos utilizar el comando npm install nombre_del_paquete. \u00bfF\u00e1cil, verdad?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NPM buscar\u00e1 el paquete en su gigantesca base de datos y lo descargar\u00e1 autom\u00e1ticamente para nosotros. Adem\u00e1s, si necesitamos una versi\u00f3n espec\u00edfica, podemos indicarlo en el package.json o usar la opci\u00f3n adecuada para instalarla. NPM tambi\u00e9n se encargar\u00e1 de registrar todas las dependencias necesarias para que nuestro paquete funcione correctamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el siguiente ejemplo instalar\u00e9 <a href=\"https:\/\/www.npmjs.com\/package\/axios\" target=\"_blank\" rel=\"noreferrer noopener\">Axios<\/a> que me permite realizar solicitudes HTTP desde el lado del servidor. Es muy \u00fatil para interactuar con APIs externas, obtener o enviar datos y realizar operaciones HTTP de manera f\u00e1cil y eficiente en proyectos de Node.js.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"916\" height=\"477\" src=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-5.png\" alt=\"\" class=\"wp-image-653\" srcset=\"https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-5.png 916w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-5-300x156.png 300w, https:\/\/danielsegovia.com\/plataforma\/wp-content\/uploads\/2023\/07\/image-5-768x400.png 768w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependencias de Desarrollo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Estas son las dependencias que solo son necesarias durante el proceso de desarrollo y pruebas del proyecto, pero no se utilizan en el entorno de producci\u00f3n. Estas dependencias pueden incluir herramientas de prueba, linters, empaquetadores y m\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para instalar una dependencia de desarrollo, se utiliza el flag <code>-D<\/code> o <code>--save-dev<\/code>, de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm install NombreDelPaquete -D<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Al usar -D, tu dependencia se agrega al archivo package.json bajo la propiedad \u00abdevDependencies\u00bb, indicando que es una dependencia requerida solo para el desarrollo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos un ejemplo: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que estamos desarrollando una aplicaci\u00f3n que necesita generar nombres y correos electr\u00f3nicos falsos con datos realistas para prop\u00f3sitos de prueba. Utilizaremos la dependencia \u00abfaker\u00bb para cumplir con este requisito.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm install faker -D<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, en nuestro archivo de script de desarrollo (por ejemplo, index.js), podemos utilizar \u00abfaker\u00bb para generar datos falsos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">\/\/ index.js\n\nconst faker = require('faker');\n\nfor (let i = 0; i &lt; 5; i++) {\n  const name = faker.name.findName();\n  const email = faker.internet.email();\n  console.log(`Nombre: ${name}, Email: ${email}`);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejemplo generar\u00e1 cinco nombres y correos electr\u00f3nicos falsos utilizando \u00abfaker\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda que, al ejecutar npm install en entornos de producci\u00f3n est\u00e1 dependencia no ser\u00e1 instalada, por lo que no debes escribir c\u00f3digo que aplique en tu aplicaci\u00f3n de producci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">NPM Script<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los Scripts de NPM son una caracter\u00edstica muy \u00fatil que te permite ejecutar comandos personalizados desde la l\u00ednea de comandos para automatizar tareas espec\u00edficas en tu proyecto. Puedes crear scripts para realizar tareas comunes como compilar c\u00f3digo, ejecutar pruebas, iniciar el servidor de desarrollo, entre otras cosas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La secci\u00f3n de Scripts se encuentra en el archivo <code>package.json<\/code> de tu proyecto Node.js y tiene la siguiente estructura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json\">{\n  \"name\": \"mi_proyecto\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"nombre_script\": \"comando_a_ejecutar\",\n    \"otro_script\": \"comando_otra_tarea\"\n  },\n  \/\/ Otras propiedades del package.json...\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cada propiedad dentro de la secci\u00f3n de Scripts es un nombre que le das a tu script, y el valor de esa propiedad es el comando que deseas ejecutar. Para ejecutar un script, utilizas el comando npm run seguido del nombre del script.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm run nombre_script<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Continuamos con el curso de Node.js. Ya llevamos m\u00e1s de 20 clases juntos, y estoy realmente impresionado por su dedicaci\u00f3n y entusiasmo en aprender m\u00e1s sobre el mundo de la programaci\u00f3n en Node.js. Hoy vamos a sumergirnos en un tema fundamental para el desarrollo en Node.js: NPM, que significa \u00abNode Package Manager\u00bb (Administrador de paquetes &#8230; <a title=\"21 &#8211; Node.js &amp; NPM\" class=\"read-more\" href=\"https:\/\/danielsegovia.com\/plataforma\/21-node-js-npm\/\" aria-label=\"Leer m\u00e1s sobre 21 &#8211; Node.js &amp; NPM\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,3],"tags":[],"class_list":["post-218","post","type-post","status-publish","format-standard","hentry","category-backend-con-node-js","category-curso-de-node-js"],"_links":{"self":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/comments?post=218"}],"version-history":[{"count":7,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/218\/revisions"}],"predecessor-version":[{"id":657,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/218\/revisions\/657"}],"wp:attachment":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/media?parent=218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/categories?post=218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/tags?post=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}