En este tema, aprenderás cómo crear y publicar tus propios paquetes en NPM (Node Package Manager). Los paquetes son una forma de distribuir y compartir código reutilizable con la comunidad de desarrolladores. Este proceso incluye la configuración del paquete, la escritura del código, la prueba y finalmente la publicación en el registro de NPM.

  1. Configuración del Paquete

1.1 Inicialización del Proyecto

Para comenzar, necesitas inicializar un nuevo proyecto de Node.js. Esto se hace utilizando el comando npm init, que crea un archivo package.json con la configuración básica de tu paquete.

npm init

Este comando te pedirá una serie de detalles sobre tu paquete, como el nombre, la versión, la descripción, el punto de entrada, etc. Puedes aceptar los valores predeterminados o proporcionar tus propios valores.

1.2 Estructura del Proyecto

Una vez que hayas inicializado tu proyecto, la estructura básica debería verse algo así:

my-package/
├── package.json
├── index.js
└── README.md
  • package.json: Contiene la configuración y las dependencias del paquete.
  • index.js: Archivo principal del paquete.
  • README.md: Archivo de documentación.

  1. Escribiendo el Código del Paquete

2.1 Archivo Principal (index.js)

Vamos a escribir un simple módulo que exporta una función que saluda al usuario.

// index.js
function greet(name) {
    return `Hello, ${name}!`;
}

module.exports = greet;

2.2 Pruebas

Es importante escribir pruebas para asegurarte de que tu paquete funciona correctamente. Puedes usar cualquier framework de pruebas, pero para este ejemplo, usaremos Mocha y Chai.

Primero, instala Mocha y Chai:

npm install --save-dev mocha chai

Luego, crea una carpeta test y un archivo test.js dentro de ella:

my-package/
├── package.json
├── index.js
├── README.md
└── test/
    └── test.js

Escribe las pruebas en test/test.js:

// test/test.js
const chai = require('chai');
const expect = chai.expect;
const greet = require('../index');

describe('Greet Function', () => {
    it('should greet the user with their name', () => {
        const result = greet('John');
        expect(result).to.equal('Hello, John!');
    });
});

Para ejecutar las pruebas, agrega un script en package.json:

"scripts": {
    "test": "mocha"
}

Ejecuta las pruebas con:

npm test

  1. Publicación del Paquete

3.1 Registro en NPM

Antes de publicar tu paquete, necesitas una cuenta en NPM. Si no tienes una, puedes crearla en npmjs.com.

Luego, inicia sesión en NPM desde la línea de comandos:

npm login

3.2 Publicación

Para publicar tu paquete, usa el comando npm publish:

npm publish

Si todo está configurado correctamente, tu paquete debería estar disponible en el registro de NPM.

3.3 Actualización del Paquete

Si necesitas actualizar tu paquete, incrementa la versión en package.json y vuelve a publicar:

"version": "1.0.1"
npm publish

  1. Ejercicio Práctico

Ejercicio

  1. Crea un nuevo paquete llamado my-math-package.
  2. Escribe una función en index.js que sume dos números.
  3. Escribe pruebas para esta función.
  4. Publica el paquete en NPM.

Solución

  1. Inicializa el proyecto:
mkdir my-math-package
cd my-math-package
npm init -y
  1. Escribe la función en index.js:
// index.js
function add(a, b) {
    return a + b;
}

module.exports = add;
  1. Escribe las pruebas en test/test.js:
// test/test.js
const chai = require('chai');
const expect = chai.expect;
const add = require('../index');

describe('Add Function', () => {
    it('should add two numbers', () => {
        const result = add(2, 3);
        expect(result).to.equal(5);
    });
});
  1. Ejecuta las pruebas:
npm test
  1. Publica el paquete:
npm login
npm publish

Conclusión

En esta sección, aprendiste cómo crear y publicar un paquete en NPM. Este proceso incluye la configuración del proyecto, la escritura del código, la prueba y la publicación. Ahora estás listo para compartir tus propios módulos con la comunidad de desarrolladores. En el siguiente módulo, exploraremos cómo gestionar dependencias y versiones de paquetes con NPM.

Curso de Node.js

Módulo 1: Introducción a Node.js

Módulo 2: Conceptos Básicos

Módulo 3: Sistema de Archivos y E/S

Módulo 4: HTTP y Servidores Web

Módulo 5: NPM y Gestión de Paquetes

Módulo 6: Framework Express.js

Módulo 7: Bases de Datos y ORMs

Módulo 8: Autenticación y Autorización

Módulo 9: Pruebas y Depuración

Módulo 10: Temas Avanzados

Módulo 11: Despliegue y DevOps

Módulo 12: Proyectos del Mundo Real

© Copyright 2024. Todos los derechos reservados