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
- Creating and Publishing a node.js Module in GitHub and NPM Registries
- Jest
- Módulos
- Node.js Packages
- Documentation
- Instalación de Módulos desde GitHub
- Introducción a los Módulos en JS por Manz
- @ull-esit-dsi-1617/scapegoat en npm
- How to install an npm package from GitHub directly? in StackOverflow
- Working with scoped packages
- npm-scope manual: Scoped packages
- Package.json documentation en npm site
- Semantic versioning and npm
Rúbrica
Incidencias para el Project Board para la prácticanpm 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
Probar que la librería está accesible y funciona
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