Muchos en nuestro gremio hemos soñado con la oportunidad de crear sistemas y soluciones que impacten la vida de millones de personas. Nunca ha sido más fácil de lograr que en nuestro tiempo.

NodeJS se ha convertido en la plataforma por excelencia para la implementación de programas en lenguaje JavaScript.

NPM es el repositorio principal de código abierto para compartir programas y librerías (paquetes) el cual se ha convertido en un verdadero fenómeno de código abierto del cual dependen innumerables sistemas informáticos.

En este artículo describiremos algunos aspectos importantes a la hora de crear y compartir (publicar) código en forma de paquetes NPM.

El sitio oficial de NPM es https://npmjs.com. Cualquier persona puede crearse un perfil de usuario del sitio por medio del cual publicar paquetes (bibliotecas, programas o aplicaciones modulares en lenguaje JavaScript)

En este artículo vamos a crear un paquete «vanilla» npm y mostraremos cómo agregar pruebas unitarias y cómo publicarlo.

Preparación

  1. Instalación de NodeJS y NPM desde https://nodejs.org (se recomienda instalar la versión «LTS»)
  2. Instalación del utilitario GIT desde https://git-scm.com/downloads
  3. Creación de una cuenta de GIT (ya sea en GitHub.com, GitLab.com, BitBucket o alguno otro proveedor)
  4. Creación de una cuenta NPM en https://npmjs.com

Para esto necesitaremos instalar NodeJS y NPM desde este sitio: https://nodejs.org/

Procedimiento

  1. Crear un repositorio GIT
  2. Clonar el repositorio en una carpeta local (git clonee url_del_repositorio)
  3. Inicializar el repositorio como un paquete NPM (npm init) (esto crea el archivo manifiesto package.json)
  4. Instalar paquetes básicos (npm install paquete --save) (esto agrega dependencias en el archivo package.json)
  5. Instalar paquetes para pruebas unitarias (npm install nyc mocha assert --save-dev)
    • Colocar el siguiente código en el archivo package.json para configurar el comando npm test: "test": "nyc --reporter=text --reporter=html mocha"
    • Una vez configurado, al ejecutar npm test el sistema invocará los paquetes de mocha y nyc que realizan las pruebas unitarias definidas en /test y que analizan la cobertura de pruebas.
  6. Crear código de pruebas unitarias (código rojo) en carpeta ~/test/archivo_de_pruebas.js
    1. Se utiliza un modelo de desarrollo de pruebas descritas por comportamiento (BDD) mediante llamadas de tipo describe("Elemento a describir",()=>{...bloques IT...}) y llamadas de tipo it("Comportamiento esperado",()=>{...pruebas específicas...})
    2. Se llama código rojo al código de pruebas que dan error al no estar implementadas adecuadamente.
    3. Se conoce como dinámica rojo->verde a la práctica de crear pruebas unitarias que deberían pasar exitosamente pero que fallan por no tener una implementación real, y a la implementación posterior de lógica que hace que las pruebas pasen exitosamente.
describe("modulo a probar", ()=>{
   it("debe funcionar de cierta forma", ()=>{
      assert.equal(1,1);
   });
});
  1. Crear código del paquete y módulos (index.js o cualquier otro archivo .js relevante.) y hacer que las pruebas pasen (código verde)
/* Ejemplo de un módulo Javascript mediante una función de auto-llamado.
 * IIFE - Immediately Invoked Function Expression)
 */
(()=>{

  function metodoPrivado1(parametro){

  }

  function metodoPrivado2(parametro){
    
  }

  exports.MetodoPublico = metodoPrivado2;

})();
  1. Generar una nueva versión del paquete (npm version patch o npm version minor o npm version major y subir un nuevo commit a git (git add . / git commit -m "comentario"
  2. Publicar el paquete (npm publish)
  3. También se puede hacer el paquete «invocable» desde la consola de comandos (terminal) usando un código «shebang» en el archivo de entrada. #!/usr/bin/env node (ejemplo)
#!/usr/bin/env node
console.log("Mi paquete funciona!");
  1. Finalmente, para instalar un paquete «ejecutable» se puede usar el comando npm i mi-paquete -g

 1,753 total views,  1 views today

0Shares
Última modificación: abril 21, 2022

Autor

Comentarios

Escribe una respuesta o comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.