Es una libreria en Javascript que permite leer archivos Markdown
para verificar los links que contengan y reportar algunas estadísticas , incluyendo si son válidos o no, con solo ingresar una ruta, además de proporcionar una herramienta de línea de comando (CLI).
Linkval
fue implementado ante la gran demanda de uso de archivos Markdown
(
GitHub, foros, blogs, ...), además es muy común
encontrar varios archivos en ese formato en cualquier tipo de repositorio, sin embargo, hay una gran problemática, 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. Ante esto Linkvak
viene a solucionar tus problemas.
npm install linkval
import { mdLinks } from "linkval";
// The path can be a file or directory
// The second parameter can be true or false
mdLinks("./some/example.md", { validate: true })
.then((links) => {
// => [{ href, line, text, file, status, ok }, ...]
})
.catch(console.error);
-
path
: Ruta absoluta o relativa al archivo o directorio. -
options
: Un objeto con únicamente la siguiente propiedad:validate
: Booleano que determina si se desea validar los links encontrados:{validate: true}
{validate: false}
Retorna una promesa (Promise
) que se resuelve en un arreglo
(Array
) de objetos (Object
), donde cada objeto representa un link y contiene
las siguientes propiedades
Con validate:false
:
href
: URL encontrada.line
: Linea(s) donde fue encontrada la URL.text
: Texto que aparecía dentro del link (<a>
).file
: Ruta del archivo donde se encontró el link.
Con validate:true
:
href
: URL encontrada.line
: Linea(s) donde fue encontrada la URL.text
: Texto que aparecía dentro del link (<a>
).file
: Ruta del archivo donde se encontró el link.status
: Código de respuesta HTTP.ok
: Mensajefail
en caso de fallo uok
en caso de éxito.
- Usar la función
mdLinks
sin segundo argumentooptions
ya sea con unpath
de archivo o directorio.
import { mdLinks } from "linkval";
mdLinks("./some/example.md")
.then((links) => {
// => [{ href, line, text, file }, ...]
})
.catch(console.error);
mdLinks("./some/dir")
.then((links) => {
// => [{ href, line, text, file }, ...]
})
.catch(console.error);
- Usar la función
mdLinks
con segundo argumento{validate: false}
, puedes usar archivo o directorio para elpath
import { mdLinks } from "linkval";
mdLinks("./some/example.md", { validate: false })
.then((links) => {
// => [{ href, line, text, file }, ...]
})
.catch(console.error);
- Usar la función
mdLinks
con segundo argumento{validate: true}
, puedes usar archivo o directorio para elpath
import { mdLinks } from "linkval";
mdLinks("./some/example.md", { validate: true })
.then((links) => {
// => [{ href, line, text, file, status, ok }, ...]
})
.catch(console.error);
- Escribir en la terminal
linkval
y ejecutarlo.
linkval
- Escribir el path que desea analizar.
? Enter your path to get started: some/example.md
- Elegir entre una de las opciones.
Default
--validate
--stats
--stats --validate
Help
Exit
El comportamiento por defecto no valida si las URLs responden ok o no, solo identifica el archivo Markdown (a partir de la ruta ingresada), analiza el archivo Markdown e imprime los links que vaya
encontrando ( HREF
), la linea donde se ubican( LINE
), el texto que hay dentro del link ( TEXT
) y la ruta del archivo donde aparece ( FILE
).
El opción hará 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 se considerará al link como ok. Por lo tanto además de las propiedades HREF
, LINE
, TEXT
y FILE
, tendremos otras llamadas OK
y STATUS
que dependerán de la respuesta recibida por la petición HTTP de la URL, donde STATUS
será el código de respuesta HTTP y OK
será un mensaje "fail" en caso de fallo u "ok" en caso de éxito.
Esta opción permitirá tener estadísticas básicas sobre los links, como el número total de links y cuántos son únicos.
Total: 17
Unique: 8
Esta opción permitirá tener estadísticas básicas sobre los links y además mostrará cuantos links rotos hay en total.
Total: 17
Unique: 8
Broken: 2
Esta opción mostrará un cuadro de ayuda con las descripciones de las opciones dentro de la terminal.
Esta opción permitirá salirte de la ejecución de linkval
en la terminal.
El archivo de ejemplo será example.md que supuestamente está en la raiz de un proyecto.
El contenido de example.md es el siguiente:
# File Content
[NPM](https://www.npmjs.com/)
![Chain Image](https://user-images.githubusercontent.com/110297/42118443-b7a5f1f0-7bc8-11e8-96ad-9cc5593715a6.jpg)
[Asynchronous in js](https://carlosazaustre.es/manejando-la-asincronia-en-javascript/gg)
[other NPM](https://www.npmjs.com/)
[Array JS](https://developer.mozilla.org/es/docs/Web/JavaScript/ggg)
- Escribir en la terminal
linkval
y ejecutarlo.
linkval
-
Escribir el path que desea evaluar en este caso example.md
-
Luego presionar ENTER y elegir una opción
-
Opción
Default
-
Opción
--validate
-
Opción
--stats
-
Opción
--stats --validate
-
Opción
Help
-
Opción
Exit
Salir de la ejecución de
linkval
en la terminal
Marilu Cornelio Zárate