npm Module

Objetivos

Partiendo de la práctica Espree Logging construya un paquete npm y publíquelo en npmjs con ámbito @aluXXX y con nombre addlogging

El módulo además de exportar la función addLogging provee un ejecutable add-logging que se llama así:

add-logging --pattern 'functionNamePattern' --output salida.js input.js

e inserta los mensajes de logs a la entrada de las funciones cuyo nombre casa con el patrón functionNamePattern que aparecen en el fichero de entrada especificado input.js.

La mayor parte de los conceptos y habilidades a adquirir con esta práctica se explican en la sección Creating and publishing a node.js module en GitHub y en NPM. Léala con detenimiento antes de hacer esta práctica.

Ámbitos

Deberá publicar el paquete en npmjs con ámbito @aluXXX y con nombre addlogging.

Para saber sobre ámbitos, vea la sección Scopes and Registries.

Pruebas

Deberá añadir pruebas usando Mocha y Chai o Jest. Repase las secciones Testing with Mocha and Chai y Jest.

Documentación

Documente el módulo incorporando un README.md y la documentación de la función exportada. Repase la sección Documenting the JavaScript Sources

Pruebas de Producción

En el repo asignado testing-addlogging-aluXXX añada las pruebas necesarias para comprobar que la última versión del paquete publicado se instala y puede ser usado. Repase la sección Testing in Production

Superproject with Git Submodule

Usando git submodule configure como super-project el repo asignado super-addloggin-aluXXX para que contenga a a los dos repos: en el que ha desarrollado el módulo npm addlogging-aluXXX y el repo para las pruebas en tiempo de producción testing-addlogging-aluXXX.

Repase la sección Making a Project with the two repos: git submodule

Semantic Versioning

Publique alguna mejora en la funcionalidad del módulo.
Por poner algunos ejemplos

  • puede hacer que el ejecutable add-logging admita como especificación de patrón una expresión regular,
  • que admita mas de un fichero de entrada,
  • que admita un directorio (en cuyo caso procesaría todos los ficheros *.js en el directorio),
  • etc.

¿Como debe en tales casos cambiar el nº de versión?

Repase la sección Semantic Versioning

References

Rúbrica

Incidencias para el Project Board para la práctica

npm Module

  • El paquete está publicado en npmjs con ámbito aluXXX

  • Contiene un ejecutable que se ejecuta correctamente (--help, etc.)

  • Se ha extendido con la opción --pattern

  • El módulo exporta las funciones adecuadas

  • Contiene suficientes tests

  • Opcional: estudio de covering

  • Se ha hecho CI con GitHub Actions

  • Los informes están bien presentados

  • La documentación es completa: API, ejecutable, instalación, etc.

  • Opcional: publicar la documentación de la API usando GitHub Pages en la carpeta docs/

  • Las pruebas de producción funcionan bien

    1. Probar que la librería está accesible y funciona

    2. Probar que el ejecutable queda correctamente instalado, puede ser ejecutado con el nombre publicado y produce salidas correctas

  • El superproyecto está correctamente estructurado usando submódulos

  • Se ha hecho un buen uso del versionado semántico en la evolución del módulo