dianams-md-links v1.0.6
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.
Éste proyecto detalla la creación de una herramienta (library
) usando Node.js,
que lea y analice archivos en formato Markdown
, para verificar los links que
contengan y reportar algunas estadísticas.
Tópicos: Node.js, módulos (CommonJS), file system, path, http.get, parsing, markdown, CLI, npm-scripts, semver, ...
:white_check_mark: DIAGRAMA DE FLUJO
:white_check_mark: INSTALACIÓN
-Global
npm install -g dianams-md-links
-Local
npm install dianams-md-links
:white_check_mark: GUÍA DE USO
:large_blue_circle: Utilízalo como módulo:
const mdLinks = require('dianams-md-links');
Ejemplo:
const mdLinks = require("md-links");
mdLinks("./some/example.md")
.then(links => {
// => [{ href, text, file }]
})
.catch(console.error);
mdLinks("./some/example.md", { validate: true })
.then(links => {
// => [{ href, text, file, status, ok }]
})
.catch(console.error);
mdLinks("./some/dir")
.then(links => {
// => [{ href, text, file }]
})
.catch(console.error);
:large_blue_circle: Utilízalo a través de la Línea de Comandos:
md-links <path-to-file> [options]
Ejemplo:
$ md-links ./some/example.md
./some/example.md http://algo.com/2/3/ Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html algún doc
./some/example.md http://google.com/ Google
$ md-links ./some/example.md --stats
Total: 3
Unique: 3
:white_check_mark: USANDO MD-LINKS EN LA LÍNEA DE COMANDOS
:large_blue_circle: En el CMD de Windows
md-links <path-to-file> [options]
- Ingresando solo md-links
Nos retorna un mensaje con las opciones válidas para ejecutar sin errores y conseguir una salida esperada.
- Ingresando solo md-links y una ruta que no existe
Nos retorna un mensaje de ERROR, describiéndonos que la ruta ingresada no la encuentra.
- Ingresando solo md-links y una ruta válida (absoluta o relativa)
Retorna los links encontrados en la ruta dada, la ruta donde fueron hallados los links y el texto que los identifica.
- Ingresando solo md-links, una ruta válida y la opción --validate
Retorna los links encontrados en la ruta dada, la ruta donde fueron hallados los links, el texto que los identifica, un mensaje dependiendo su respuesta HTTP y el código de estado HTTP.
- Ingresando solo md-links, una ruta válida y la opción --stats
Retorna estadísticas básicas según los links encontrados: Total de links encontrados, y total de links únicos.
- Ingresando solo md-links, una ruta válida y la opción --stats --validate y viceversa
Retorna estadísticas básicas según los links encontrados: Total de links encontrados, total de links únicos y links rotos.
- Ingresando solo md-links, una ruta válida y una opción no válida
Nos retorna un mensaje con las opciones válidas para ejecutar sin errores y conseguir una salida esperada.
:large_blue_circle: En la terminal de Ubuntu en Windows
md-links <path-to-file> [options]
- Igualmente podemos probar todas las opciones anteriores en ésta otra terminal
:white_check_mark: USANDO LIBRERÍA MD-LINKS DESPUÉS DE PUBLICAR EN NPM
-Instalamos el módulo dianams-md-links publicada en npm
Usando la Librería
1. Requerimos la librería y la guardamos en una variable p.e mdLinks 2. Llamamos esa variable creada y le añadimos dos argumentos, path y validate:true 3. Mostramos en consola lo que nos retorna la librería al probarla que es un array de objetos con cinco propiedades
1. Requerimos la librería y la guardamos en una variable p.e mdLinks 2. Llamamos esa variable creada y le añadimos dos argumentos, path y validate:false 3. Mostramos en consola lo que nos retorna la librería al probarla, que es un array de objetos con tres propiedades
:white_check_mark: OBJETIVOS DE APRENDIZAJE
Recuerda colocar en esta seccion los objetivos de aprendizaje que quedaron pendientes de tu proyecto anterior.
Javascript
- Uso de callbacks
- Consumo de Promesas
- Creacion de Promesas
- Modulos de Js
- Recursión
Node
- Sistema de archivos
- package.json
- crear modules
- Instalar y usar modules
- npm scripts
- CLI (Command Line Interface - Interfaz de Línea de Comando)
Testing
- Testeo de tus funciones
- Testeo asíncrono
- Uso de librerias de Mock
- Mocks manuales
- Testeo para multiples Sistemas Operativos
Git y Github
- Organización en Github
Buenas prácticas de desarrollo
- Modularización
- Nomenclatura / Semántica
- Linting