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
- Instalación de NodeJS y NPM desde https://nodejs.org (se recomienda instalar la versión «LTS»)
- Instalación del utilitario GIT desde https://git-scm.com/downloads
- Creación de una cuenta de GIT (ya sea en GitHub.com, GitLab.com, BitBucket o alguno otro proveedor)
- Creación de una cuenta NPM en https://npmjs.com
Para esto necesitaremos instalar NodeJS y NPM desde este sitio: https://nodejs.org/
Procedimiento
- Crear un repositorio GIT
- Clonar el repositorio en una carpeta local (
git clonee
)url_del_repositorio
- Inicializar el repositorio como un paquete NPM (
npm init
) (esto crea el archivo manifiestopackage.json
) - Instalar paquetes básicos (
npm install paquete --save
) (esto agrega dependencias en el archivopackage.json
) - 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 comandonpm 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.
- Colocar el siguiente código en el archivo
- Crear código de pruebas unitarias (código rojo) en carpeta
~/test
/archivo_de_pruebas.js- 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 tipoit("Comportamiento esperado",()=>{...pruebas específicas...})
- Se llama código rojo al código de pruebas que dan error al no estar implementadas adecuadamente.
- 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.
- Se utiliza un modelo de desarrollo de pruebas descritas por comportamiento (BDD) mediante llamadas de tipo
describe("modulo a probar", ()=>{ it("debe funcionar de cierta forma", ()=>{ assert.equal(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; })();
- Generar una nueva versión del paquete (
npm version
patch onpm version minor
onpm version major
y subir un nuevo commit a git (git add .
/git commit -m "comentario"
- Publicar el paquete (
npm publish
) - 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!");
- Finalmente, para instalar un paquete «ejecutable» se puede usar el comando
npm i mi-paquete -g
1,753 total views, 1 views today
Comentarios