MD LINKS es una API desarrollada en node.js, la cual se utiliza para buscar y extraer links que se encuentren dentro de archivos Markdown
(.md) y proporcionar diferentes opciones para que los usuarios puedan verificar si links son válidos o están rotos, y entregar estadisticas al respecto, de esta manera se brinda una solucion efectiva a quienes trabajan con este tipo de archivo verificando la integridad de los links contenidos. MD LINKS nos brinda las siguientes funciones:
Extracción de links
: Permite extraer todos los links presentes en los archivos Markdown de forma precisa,
identificando tanto el texto del links como su URL.Validacion de links
: Para aquellos usuarios que deseen asegurarse de que los links dentro de sus archivos siguen siendo válidos,
MD LINKS ofrece una opción para validar el estado de cada link mediante peticiones HTTP.Información detallada
: El resultado del análisis muestra información detallada sobre cada link, incluyendo su estado HTTP y si ha pasado la validación,
lo que permite identificar enlaces rotos y realizar correcciones necesarias.Para instalar MD LINKS, debe seguir los pasos que se indican a continuación:
Ejecutar el siguiente comando npm para la instalación:
npm install n-rogget/md-links
Una vez instalada la API, podrá utilizarla para buscar links en los archivos Markdown, validar el estado de los links y obtener estadísticas respecto a ellos.
Para efectos de la explicación ./directorioEjemplo corresponderá a la ruta del archivo o directorio a analizar. Al ejecutar el siguiente comando:
md-links ./directorioEjemplo
Se obtendrá un arreglo de objetos con las propiedades:
file: Ruta del archivo donde se encontró el link.
href: URL encontrada.
text: Texto encontrado dentro del link.
Para obtener las validaciones se utiliza el argumento --validate
de la siguiente manera:
md-links ./directorioEjemplo --validate
De esta forma se obtendrá un arreglo de objetos con las propiedades:
file: Ruta del archivo donde se encontró el link.
href: URL encontrada.
text: Texto encontrado dentro del link.
status: Código de respuesta HTTP.
ok: Si falla se obtiene un mensaje 'fail', de lo contrario 'ok'
Para obtener las estadísticas se utiliza el argumento --stats
de la siguiente manera:
md-links ./directorioEjemplo --stats
De esta forma obtendrá estadísticas relacionadas a los links de los archivos :
- Cantidad de links: Representan la cantidad total de links encontrados en los archivos analizados. Cada link único se suma,
incluso si aparece varias veces en diferentes archivos.
- Cantidad de links únicos: Representan la cantidad de links distintos presentes en los archivos Markdown. Si un mismo enlace
aparece en varios archivos, solo se contará una vez.
- Cantidad de links repetidos: Representan la cantidad de links repetidos en los archivos Markdown. Si un mismo enlace aparece en
varios archivos, se contará aquí.
Para obtener las estadísticas se utiliza el argumento `--stats --validate`` de la siguiente manera:
md-links ./directorioEjemplo --stats --validate
- Cantidad de links: Representan la cantidad total de links encontrados en los archivos analizados. Cada link único se suma,
incluso si aparece varias veces en diferentes archivos.
- Cantidad de links válidos: Representan la cantidad de links encontrados en los archivos analizados cuya ruta es válida.
- Cantidad de links rotos: Representan la cantidad de links encontrados en los archivos analizados cuya ruta no es válida.
- Cantidad de links únicos: Representan la cantidad de links distintos presentes en los archivos Markdown. Si un mismo enlace
aparece en varios archivos, solo se contará una vez.
- Cantidad de links repetidos: Representan la cantidad de links repetidos en los archivos Markdown. Si un mismo enlace aparece en
varios archivos, se contará aquí.
Para la organización del proyecto se utilizó Github Proyect, con el objetivo de planificar adecuadamente los tiempos y dividir el desarrollo en metas y tareas pequeñas. Se realizó un diagrama de flujo para ordenar las funciones y el proceso de desarrollo.
El desarrollo del proyecto tomo alrededor de 3 sprints y el trabajo se dividio en 5 hitos:
Hito 1: Creación de la función mdLinks que devuelve una promesa con un arreglo de tres propiedades de los links, href, text y file.
Hito 2: Incorporación del argumento validate para agregar dos propiedades sobre validaciones HTTP, status y ok.
Hito 3: Incorporacion de lectura de directorios, además de solo archivos.
Hito 4: Creación de la interfaz de línea de comando.
Hito 5: Incorporación de recursividad de la función para leer directorios.
JavaScript
: para crear las funciones
Node.js
: como entorno de programación de JavaScript con sus Módulos fs y path
Axios
: Librería de Node.js para hacer las peticiones HTTP
NPM
(Node Package Manager): para crear la interfaz de línea de comando
Jest
: para testear las funciones sincronas y asincronas
Github Project
: para planificar el tiempo y dividir las tareas
Flowchart maker
: Para realizar el diagrama