Aplicación que permite extraer los links de un archivo Markdown , validar su estado y mostrar estadísticas como links OK, únicos y broken.
npm i marcelacoronelp-md-links
const mdLinks = require("marcelacoronelp-md-links");
El ejecutable de nuestra aplicación debe poder ejecutarse de la siguiente manera a través de la terminal:
md-links <path-to-file> [options]
Si se ejecuta sin pasar opciones se obtendrá información de cada link encontrado. [{ href, text, file }].
Si pasamos la opción --validate
, realiza 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.
Si pasamos la opción --stats
el output (salida) será un texto con estadísticas
básicas sobre los links.
También podemos combinar --stats
y --validate
para obtener estadísticas que
necesiten de los resultados de la validación.
Diseñar tu propia librería es una experiencia fundamental para cualquier desarrollador porque que te obliga a pensar en la interfaz (API) de tus módulos y cómo será usado por otros developers. Debes tener especial consideración en peculiaridades del lenguaje, convenciones y buenas prácticas.
A continuación puedes ver los objetivos de aprendizaje de este proyecto:
- Uso de condicionales (if-else | switch | operador ternario)
- Uso de funciones (parámetros | argumentos | valor de retorno)
- Manipular arrays (filter | map | sort | reduce)
- Manipular objects (key | value)
- Uso ES modules (
import
|export
) - Diferenciar entre expression y statements.
- Diferenciar entre tipos de datos atómicos y estructurados.
- Uso de callbacks.
- Consumo de Promesas.
- Creación de Promesas.
- Uso de sistema de archivos. (fs, path)
- Instalar y usar módulos. (npm)
- Creación de modules. (CommonJS)
- Configuración de package.json.
- Configuración de npm-scripts
- Uso de CLI (Command Line Interface - Interfaz de Línea de Comando)
- Testeo unitario.
- Testeo asíncrono.
- Uso de librerias de Mock.
- Uso de Mocks manuales.
- Testeo para múltiples Sistemas Operativos.
- Organizar y dividir el código en módulos (Modularización)
- Uso de identificadores descriptivos (Nomenclatura | Semántica)
- Uso de linter (ESLINT)
- Uso de comandos de git (add | commit | pull | status | push)
- Manejo de repositorios de GitHub (clone | fork | gh-pages)
- Colaboración en Github (branches | pull requests | |tags)
- Organización en Github (projects | issues | labels | milestones)
- Verbos HTTP (http.get)
- Puede instalarse via
npm install --global <github-user>/md-links
- Un board con el backlog para la implementación de la librería.
- Documentación técnica de la librería.
- Guía de uso e instalación de la librería
- El módulo exporta una función con la interfaz (API) esperada.
- Implementa soporte para archivo individual
- Implementa soporte para directorios
- Implementa
options.validate
- Expone ejecutable
md-links
en el path (configurado enpackage.json
) - Se ejecuta sin errores / output esperado
- Implementa
--validate
- Implementa
--stats
- Pruebas unitarias cubren un mínimo del 70% de statements, functions, lines, y branches.
- Pasa tests (y linters) (
npm test
).