UNPKG

md-links-gavp

Version:

A library that finds and validates the status of the links inside a markdown file

211 lines (128 loc) 6.15 kB
# Markdown Links ## Índice * [1. Descripción](#1-descripción) * [2. Instrucciones de instalación](#2-instrucciones-de-instalación) * [3. Instrucciones de uso](#3-instrucciones-de-uso) * [4. Dependencies y devDependencies](#4-dependencies-y-devdependencies) * [5. Objetivos de aprendizaje](#5-objetivos-de-aprendizaje) * [6. Maintainer](#6-maintainer) *** ## 1. Descripción **MD-LINKS GAVP** es una librería y _CLI_ que te permite leer archivos _Markdown_ y obtener información útil sobre los enlaces o links que se incluyen en dichos documentos. De cada link, puedes obtener el path, url, texto que aparece dentro del link y código de respuesta HTTP. Así como estadísticas generales sobre los links de tus archivos _Markdown_ . ## 2. Instrucciones de instalación Módulo instalable mediante npm ```js npm i md-links-gavp ``` ## 3. Instrucciones de uso El módulo puede **importarse** en otros scripts de Node.js a través de la siguiente interfaz: #### `mdLinks(path, options = {validate: , stats: })` ##### **Argumentos** * `path`: Ruta **absoluta** o **relativa** al **archivo** o **directorio**. * `options`: Un objeto con las siguientes propiedades: - `validate`: Booleano que determina si se desea validar los links encontrados. - `stats`: Booleano que determina si se desea obtener estadísticas sobre los links encontrados. ##### **Valor de retorno** La función returna una promesa (`Promise`) que **resuelva a un arreglo** (`Array`) de objetos (`Object`), donde cada objeto representa un link y contiene las siguientes propiedades Con `validate:false` : * `href`: URL encontrada. * `text`: Texto que aparecía dentro del link (`<a>`). * `file`: Ruta del archivo donde se encontró el link. Con `validate:true` : * `href`: URL encontrada. * `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`: Mensaje `fail` en caso de fallo u `ok` en caso de éxito. #### **Ejemplo (resultados como comentarios)** ```js const mdLinks = require("md-links-gavp"); 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); ``` ### 2) CLI (Command Line Interface - Interfaz de Línea de Comando) El ejecutable de la aplicación también puede ejecutarse de la siguiente manera a través de la **terminal**: `md-links <path-to-file> [options]` Por ejemplo: ![md-links](https://i.ibb.co/kMhYZGb/mdLinks.jpg) El comportamiento por defecto no valda si las URLs responden ok o no, solo identifica el archivo markdown (a partir de la ruta que recibe como argumento), analiza 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 pasas 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: ![md-links validate](https://i.ibb.co/dP0YC0M/md-Links-validate.jpg) El _output_ en este caso incluye la palabra `ok` o `fail` después de la URL, así como el status de la respuesta recibida a la petición HTTP a dicha URL. ##### `--stats` Si pasas la opción `--stats` el output (salida) será un texto con estadísticas básicas sobre los links. Por ejemplo: ![md-links stats](https://i.ibb.co/tBXhRw4/md-Links-stats.jpg) También puedes combinar `--stats` y `--validate` para obtener estadísticas que necesiten de los resultados de la validación. Por ejemplo: ![md-links validate & stats](https://i.ibb.co/D7KtTbv/md-Links-val-stats.jpg) ## 4. Dependencies y devDependencies - Axios - Chalk - Commander - Figlet - Marked - Jest - EsLint ## 5. Objetivos de aprendizaje Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo. ### JavaScript - [x] Diferenciar entre tipos de datos primitivos y no primitivos. - [x] Arrays (arreglos). - [x] Objetos (key, value). - [x] Uso de condicionales (if-else, switch, operador ternario, lógica booleana). - [x] Funciones (params, args, return). - [x] Recursión o recursividad. - [x] Módulos de CommonJS. - [x] Diferenciar entre expresiones (expressions) y sentencias (statements). - [x] Callbacks. - [x] Promesas. - [x] Pruebas unitarias (unit tests). - [x] Pruebas asíncronas. - [x] Uso de mocks y espías. - [ ] Pruebas de compatibilidad en múltiples entornos de ejecución. - [x] Uso de linter (ESLINT) - [x] Uso de identificadores descriptivos (Nomenclatura y Semántica) ### Node.js - [x] Instalar y usar módulos con npm - [x] Configuración de package.json - [x] Configuración de npm-scripts - [x] process (env, argv, stdin-stdout-stderr, exit-code) - [x] File system (fs, path) ### Control de Versiones (Git y GitHub) - [x] Git: Instalación y configuración - [x] Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote) - [x] Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag) - [x] GitHub: Creación de cuenta y repos, configuración de llaves SSH - [x] GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags) - [x] GitHub: Organización en Github (projects | issues | labels | milestones | releases) ### HTTP - [x] Consulta o petición (request) y respuesta (response). - [x] Codigos de status de HTTP ## 6. Maintainer - [Angélica Venta](https://github.com/AngieVenta)