Publicar un módulo de Node.js en NPM

    Introducción

    NPM son las siglas de Node Package Manager y se refiere al repositorio de proyectos en línea o la herramienta de interfaz de línea de comandos (CLI) que se utiliza para interactuar con el repositorio en línea.

    Actualmente, NPM es el registro de software más grande del mundo con más de 1,4 millones de paquetes de códigos. Por ejemplo, si desea utilizar Node.js para enviar correos electrónicos, puede hacer una búsqueda rápida en su repositorio y encontrar un módulo como Nodemailer, lo que puede ahorrarle mucho tiempo.

    Es posible que desee compartir una herramienta que ha creado con la comunidad, que agiliza algunas de las tareas estándar. En este artículo, veremos cómo publicar un módulo Node.js en NPM.

    Introducción a NPM

    Para publicar un módulo en NPM, necesitamos tener una cuenta de NPM. Si no tiene uno, puede crearlo aquí.

    Te puede interesar:Single Page Apps con Vue.js y Flask: Gestión de estados con Vuex

    Cuando instala Node.js, el npm La herramienta también se instala automáticamente.

    Para comprobar si npm se ha instalado correctamente, puede comprobar cuál es la versión instalada actualmente ejecutando:

    $ npm -v
    

    Una vez comprobado que de hecho tenemos npm instalado, podemos iniciar sesión:

    $ npm login
    

    La herramienta nos pedirá nuestra identificación, correo electrónico y contraseña creados al registrarse.

    Te puede interesar:Aplicaciones de una sola página con Vue.js y Flask: implementación

    Nota: No necesita tener una cuenta para usar NPM, pero para publicar un módulo, necesitará una, ya que está vinculado a usted como autor.

    Crear un paquete

    Creemos un directorio para nuestro proyecto y pasemos a él:

    $ mkdir publish-to-npm
    $ cd publish-to-npm
    

    A continuación, inicializaremos el proyecto:

    $ npm init 
    

    A continuación, el comando le presentará varias preguntas que, una vez completadas, package.json archivo:

    Te puede interesar:Aplicaciones de una sola página con Vue.js y Flask: Integración AJAX
    {
      "name": "publish-to-npm",
      "version": "1.0.0",
      "description": ""Sample module for publishing"",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "[email protected]",
      "license": "ISC"
    }
    

    El principal punto de entrada, por defecto, es el index.js, por lo que queremos crear ese archivo y agregarle algo.

    Si usaste el -y bandera junto a la init comando, estos se habrían establecido en sus valores predeterminados.

    Agregar dependencias

    Agreguemos un código a nuestro index.js y agregue una dependencia, como otro módulo NPM para que lo utilice.

    Primero, instalaremos una dependencia:

    Te puede interesar:Aplicaciones de una sola página con Vue.js y Flask: Configuración de Vue.js
    $ npm install node-fetch --save
    

    Luego, lo importaremos a nuestro index.js archivo y agregue algo de lógica:

    const fetch = require('node-fetch');
    
    fetch('https://google.com')
        .then(res => res.text())
        .then(text => console.log(text))
    

    Para verificar que esto está funcionando, podemos ejecutar:

    $ node index.js
    

    Y la salida es:

    <!doctype html>
    <html itemscope="" itemtype="http://schema.org/WebPage" lang="en-RS">
        <head>
            <meta charset="UTF-8">
            <meta content="origin" name="referrer">
            <!-- Rest of the page -->
    

    Al comprobar el package.json archivar ahora, podemos ver node-fetch en nuestras dependencias:

    Te puede interesar:Redes neuronales en JavaScript con Brain.js
    {
      "name": "publish-to-npm",
      "version": "1.0.0",
      "description": ""Sample module for publishing"",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "[email protected]",
      "license": "ISC"
      "dependencies": {
        "node-fetch": "2.6.1"
      }
    }
    

    Nota: los --save bandera dice npm para actualizar el proyecto con el módulo como dependencia. Esto se ha eliminado en las versiones más recientes y el módulo se agregará a la lista de dependencias incluso sin la --save flag, sin embargo, para versiones anteriores, tendrá que usarlo.

    Publicar en NPM

    Ahora, podemos publicar el módulo en NPM a través del publish mando:

    $ npm publish
    

    Si obtiene algún error, lo más probable es que se deba a una colisión de nombres. es decir, ya existe un paquete con el mismo nombre en npm. Tenemos que cambiar el nombre de nuestro proyecto por algo único.

    Puede buscar nombres de paquetes existentes a través de la barra de búsqueda en el página de inicio.

    Te puede interesar:Ejecución de aplicaciones de node con Forever

    Después de crear un nombre único, debe cambiar el nombre del paquete en nuestro package.json archivo. En aras de la coherencia, también se recomienda actualizar el nombre de la carpeta para que coincida con el nombre del paquete.

    Si no puede encontrar un nombre único, debe consultar paquetes con alcance. Básicamente, esto le brinda su propio espacio de nombres en NPM, por lo que puede nombrar sus paquetes como desee.

    Por lo general, se recomienda que, si planea hacer público un módulo, evite usar el mismo nombre que otro paquete para evitar confusiones innecesarias. Sin embargo, es muy práctico para uso personal.

    Esta es una de esas configuraciones que evitamos cambiar usando el -y bandera. Si quisiera crear un módulo con ámbito, necesitaría inicializar su proyecto con:

    Te puede interesar:Paquetes de nodes útiles que quizás no conozca
    $ npm init [email protected]
    

    Conclusión

    En este artículo, escribimos una aplicación simple y la publicamos en NPM como un módulo público para que otros desarrolladores la utilicen cuando les convenga.

    Es posible que en el futuro se encuentre con una situación en la que no encuentre un módulo disponible para resolver su problema particular. Puede escribir la solución usted mismo y cargarla en NPM, y tal vez ayudar a otros desarrolladores con el mismo problema.

     

    Rate this post

    Etiquetas: