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:
- [X] Uso de condicionales (if-else | switch | operador ternario)
- [X] Uso de funciones (parámetros | argumentos | valor de retorno)
- [X] Manipular arrays (filter | map | sort | reduce)
- [X] Manipular objects (key | value)
- [X] Uso ES modules (
import
|export
) - [X] Diferenciar entre expression y statements.
- [ ] Diferenciar entre tipos de datos atómicos y estructurados.
- [ ] Uso de callbacks.
- [ ] Consumo de Promesas.
- [ ] Creación de Promesas.
- [X] Uso de sistema de archivos. (fs, path)
- [X] Instalar y usar módulos. (npm)
- [X] 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)
- [X] Uso de identificadores descriptivos (Nomenclatura | Semántica)
- [ ] Uso de linter (ESLINT)
- [X] 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)
- [ ] Recursión.
- [ ] 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.
- [X] Implementa soporte para archivo individual
- [X] Implementa soporte para directorios
- [X] Implementa
options.validate
- [X] Expone ejecutable
md-links
en el path (configurado enpackage.json
) - [ ] Se ejecuta sin errores / output esperado
- [X] Implementa
--validate
- [X] Implementa
--stats
- [X] Pruebas unitarias cubren un mínimo del 70% de statements, functions, lines, y branches.
- [X] Pasa tests (y linters) (
npm test
).