Markdown es un lenguaje de marcado
ligero muy popular entre developers. Es usado en
muchísimas plataformas que manejan texto plano (GitHub, foros, blogs, etc.) y
es muy común encontrar varios archivos en ese formato en cualquier tipo de
repositorio (empezando por el tradicional README.md).
Estos archivos Markdown normalmente contienen links (vínculos/ligas) que
muchas veces están rotos o ya no son válidos y eso perjudica mucho el valor de
la información que se quiere compartir.
Se ha creado una herramienta usando Node.js, que lea y analice archivos
en formato Markdown, para verificar los links que contengan y reportar
algunas estadísticas.
En este proyecto se desarrollo una librería en Node.js que funciona como herramienta para analizar links dentro de archivos Markdown. Esta librería esta disponible de dos formas: como un módulo publicado en GitHub, que las usuarias podrán instalar e importar en otros proyectos, y como una interfaz de línea de comandos (CLI) que permite utilizar la librería directamente desde el terminal.
-
Para este proyecto, se utilizaron los módulos CommonJS con la síntaxis
requirey el formato de módulos original de Node.js. -
Se usaron funciones asíncronas utilizando
readFile. Además, del módulofs/promises, la versión promisificada de las funciones comoreadFile. -
Para la recursividad, se utilizó la versión síncrona de la función para leer directorios,
readdirSync.
El proyecto se basa en un proceso lógico compuesto por diferentes pasos. Para comprender mejor lo que se debía hacer y planificar las tareas y objetivos, se desarrollo un diagrama de flujo.
README.mddescripción del módulo, instrucciones de instalación/uso, documentación del API y ejemplos. Contiene todo lo relevante para que cualquier developer que quiera usar tu librería pueda hacerlo sin inconvenientes.index.js: Contiene la función (mdLinks).package.jsonContiene la configuración de nombre, versión, descripción, autores, licencia, dependencias, scripts (pretest, test, ...), main, bin.editorconfigcon configuración para editores de texto. Este archivo no se debe cambiar..eslintrccon configuración para linter. Este archivo contiene una configuración básica para ESLint, si deseas agregar reglas adicionales como Airbnb deberás modificar este archivo..gitignorepara ignorarnode_modulesu otras directorios que no deban incluirse en control de versiones (git).test/md-links.spec.jscontiene los tests unitarios para lafunción mdLinks.test/data.spec.jscontiene los test para lasfunciones puras.
Este proyecto se fue construyendo por hitos. A continuación se muestran los hitos que se fuerón trabajando:
Uso de la línea de comandos El ejecutable de la aplicación de realiza en la terminal de la siguiente manera:
nancymv <path-to-file>
Al ejecutar y pasarle un archivo --> nancymv "prueba.md"
Si pasamos la opción --stats el output (salida) será un texto con estadisticas básicas sobre los links.
Si pasamos la opción --validate, el módulo debe hacer una petición HTTP para averiguar si el link funciona o no. Si el link resulta en una redirección a una URL que responde ok, entonces consideraremos el link como ok.
Si se colocá --validate --stats se obtienen los links validados y las estadisticas basicas.
Al ejecutar y pasarle un directorio --> nancymv "ejem-directorio"
El projecto se planifico utilizando Github Projects







