UNPKG

md-links-check

Version:

[Markdown](https://es.wikipedia.org/wiki/Markdown) es un lenguaje de marcado ligero muy popular entre developers. Es usado en muchísimas plataformas que manejan texto plano (GitHub, foros, blogs, ...), y es muy común encontrar varios archivos en ese fo

146 lines (88 loc) 4.72 kB
# Markdown Links ## Preámbulo [Markdown](https://es.wikipedia.org/wiki/Markdown) es un lenguaje de marcado ligero muy popular entre developers. Es usado en muchísimas plataformas que manejan texto plano (GitHub, foros, blogs, ...), 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. Dentro de una comunidad de código abierto, nos han propuesto crear una herramienta usando [Node.js](https://nodejs.org/), que lea y analice archivos en formato `Markdown`, para verificar los links que contengan y reportar algunas estadísticas. ## Diagrama de Flujo A continuación, se muestra el diagrama de flujo con el algoritmo para la implementación de la solución de md-Links. ![diagrama-Flujo](https://raw.githubusercontent.com/ErandiCVC13/CDMX007-fe-md-links/master/assets/img/MD-LINKS.jpg) ## Documentación técnica de la librería. Las herramientas y dependencias implementadas para la construcción de esta Librería fueron las siguientes: |Especificaciones técnicas| | ---------------------- | | **Lenguaje** | |JavaScript ECMAScript 6| | **Ejecución** | |Node.js| | **Dependencias y modulos NPM**| |chalk | |node-fetch | |File System | |Path | | **Testing** | | Jest (pruebas unitarias) | | **Otros** | |RegEX | |module.exports| |Línea de comando CLI| ## Instalación de la librería Podemos instalar directamente desde GitHub con el comando: `npm install md-links-check` ó `npm i md-links-check` Sí se quiere implementar globalmente. Puede instalarse via: `npm install --global md-links-check` ó `npm i --global md-links-check` Este módulo incluye ejecutable y una interfaz que podamos importar con `require` para usarlo programáticamente. ## Guía de Uso: ### CLI (Command Line Interface - Interfaz de Línea de Comando) El ejecutable de nuestra aplicación se puede ejecutar de la siguiente manera a través de la terminal: `md-Links <path-to-file> [options]` Por ejemplo: ![Ejemplo-1](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo.png?raw=true) Resultado: ![Ejemplo-2](https://raw.githubusercontent.com/ErandiCVC13/CDMX007-fe-md-links/master/assets/img/md-Link-ejemplo-2.png) El comportamiento por defecto no valida si las URLs responden ok o no, solo debe identifica el archivo markdown (a partir de la ruta que recibe como argumento), analizar el archivo Markdown e imprimir los links que vaya encontrando, junto con la ruta del archivo donde aparece y el texto que hay dentro del link (truncado a 50 caracteres). #### Options ##### `--validate` Si pasamos la opción `--validate`, el módulo hace 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. Por ejemplo: ![Ejemplo-3](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-3.png?raw=true) Resultado: ![Ejemplo-4](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-4.png?raw=true) Vemos que el _output_ en este caso incluye la palabra `OK` o `FAIL`, así como el status de la respuesta recibida a la petición HTTP a dicha URL. ##### `--stats` Si pasamos la opción `--stats` el output (salida) será un texto con estadísticas básicas sobre los links. Por ejemplo: ![Ejemplo-5](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-5.png?raw=true) Resultado: ![Ejemplo-6](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-6.png?raw=true) También podemos combinar `--stats` y `--validate` ó `--validate` y `--stats` para obtener estadísticas que necesiten de los resultados de la validación. Por ejemplo: ![Ejemplo-7](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-7.png?raw=true) ó ![Ejemplo-8](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-8.png?raw=true) Resultado: ![Ejemplo-9](https://github.com/ErandiCVC13/CDMX007-fe-md-links/blob/master/assets/img/md-Link-ejemplo-9.png?raw=true) ## Autor - Erandi Cuervo