1.0.6 • Published 4 years ago

dianams-md-links v1.0.6

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

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