1. Preambulo:
2. Descripción del módulo:
3. Documentación del API:
3. Ejemplos:
4. Importante:
5. Autor:
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.
md-links
es una herramienta que usa Node.js, para leer y analizar archivos en formato Markdown, para verificar los links que contengan y reportar algunas estadísticas.
Esta librería puedes instalarla desde npm o desde github, a continuación te dejo los detalles:
$ npm install andu15-mdlinks
$ npm i andu15-mdlinks
$ npm install Andu15/LIM015-md-links
const mdLinks = require('andu15-mdlinks');
Para realizar este proyecto fue fundamental la organización y el primer paso fue realizar un diagrama de flujo, que te muestro a continuación:
Y este proyecto consta de dos partes:
1. JavaScript API
Conjunto de módulos donde:
- path.js, contiene funciones síncronas utilizando métodos del core de node.js como
fileSystem
ypath
- mdLinksApi.js, contiene paquetes npm como:
marked
para convertir el texto de un archivo markdown a elementos html y junto con el custom renderer se puede extraer las propiedades de un elemento ancla ynode-fetch
para realizar las peticiones y obtener el status de los links, ello en conjunto con la funcion recursiva traverseDirectoryFindFiles, se construye las bases de lo que sera nuestra funcion mdLinks. - index.js, contiene la funcion mdLinks como tal y que retornará una promesa en estado pending y que consumiremos más adelante...
2. CLI (Command Line Interface - Interfaz de Línea de Comando)
Aquí hemos divido el proceso en 2 modulos:
- options.js, posee pequeñas funciones donde obtiene un reporte de los links totales que existen en un archivo markdown, además de un conteo de los links unicos, links rotos y links ok. Como un plus contienen constantes con template strings que albergan arte ascii para personalizar los rejects del consumo de la funcion mdLinks.
- cli.js, posee el metodo de process.argv de node para poder capturar el input del usuario y luego una serie de condicionales para ver por consola el consumo de la promesa.
PDTA: Para variar los colores predeterminados de la consola, estoy usando una librería llamada
chalk
El ejecutable de esta aplicación debe poder ejecutarse de la siguiente manera a través de la terminal:
md-links <path> [options]
Por ejemplo:
- Cuando no ingresas una ruta
$ md-links |
---|
- Cuando ingresas una ruta incorrecta
$ md-links asdfg |
---|
- Cuando ingresas una ruta de un archivo que no sea .md o carpeta que no tenga archivos.md
$ md-links lib/prueba.txt |
---|
- Cuando ingresas una ruta de un archivo markdown que no posee links
$ md-links lib/prueba/prueba2/prueba2.md |
---|
- Cuando ingresas el comando --help visualizaras una sección de ayuda:
$ md-links --help |
---|
- Cuando ingreses una ruta y luego el comando --validate
$ md-links lib/mdlinks.md --validate |
---|
- Cuando ingreses una ruta y luego el comando --stats
$ md-links lib/mdlinks.md --stats |
---|
- Cuando ingreses una ruta y luego los comandos --validate --stats
$ md-links lib/mdlinks.md --validate --stats |
---|
- En caso de que ingreses mas de 3 argumentos:
$ md-links lib/mdlinks.md --validate --stats --loqsea |
---|
Esta librería esta hecha en node.js en conjunto con CommonJS Modules, es decir, se implemento require/module.exports
- Inicio del proyecto: 08/09/2021
- Fin del proyecto: 30/09/2021
███▓▒░░ Andu15 ░░▒▓███