- 1. Preámbulo 📝
- 2. Resumen del proyecto 📄
- 3. Objetivos de aprendizaje 💪
- 4. Diagrama de flujo ✍
- 5. ¿Qué incluye la librería? 📚
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.
Dentro de una comunidad de código abierto, nos han propuesto crear una
herramienta usando Node.js, que lea y analice archivos
en formato Markdown
, para verificar los links que contengan y reportar
algunas estadísticas.
Node.js es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome. Esto nos va a permitir ejecutar JavaScript en el entorno del sistema operativo, ya sea tu máquina o un servidor, lo cual nos abre las puertas para poder interactuar con el sistema en sí, archivos, redes, ...
En este proyecto nos alejamos un poco del navegador para construir un programa que se ejecute usando Node.js, donde aprenderemos sobre cómo interactuar con el sistema archivos, con el entorno (proceso, env, stdin/stdout/stderr), ...
En este proyecto crearás una herramienta de línea de comando (CLI) así como tu propia librería (o biblioteca - library) en JavaScript.
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.
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.
-
[✔️] Diferenciar entre tipos de datos primitivos y no primitivos
-
[✔️] Arrays (arreglos)
-
[✔️] Objetos (key, value)
-
[✔️] Uso de condicionales (if-else, switch, operador ternario, lógica booleana)
-
[✔️] Funciones (params, args, return)
-
[✔️] Recursión o recursividad
-
[✔️] Módulos de CommonJS
-
[✔️] Diferenciar entre expresiones (expressions) y sentencias (statements)
-
Callbacks
-
[✔️] Promesas
-
[✔️] Pruebas unitarias (unit tests)
-
[✔️] Pruebas asíncronas
-
Uso de mocks y espías
-
Pruebas de compatibilidad en múltiples entornos de ejecución
-
Uso de linter (ESLINT)
-
[✔️] Uso de identificadores descriptivos (Nomenclatura y Semántica)
-
[✔️] Instalar y usar módulos con npm
-
[✔️] Configuración de package.json
-
[✔️] Configuración de npm-scripts
-
[✔️] process (env, argv, stdin-stdout-stderr, exit-code)
-
[✔️] File system (fs, path)
-
[✔️] Git: Instalación y configuración
-
[✔️] Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)
-
[✔️] Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)
-
GitHub: Creación de cuenta y repos, configuración de llaves SSH
-
GitHub: Despliegue con GitHub Pages
-
[✔️] GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)
-
[✔️] GitHub: Organización en Github (projects | issues | labels | milestones | releases)
-
Consulta o petición (request) y respuesta (response).
-
Codigos de status de HTTP
El plan de trabajo cuenta con un solo diagrama de flujo donde se detalla paso a paso el proceso que se esta realizando y las opciones que estamos ingresando
Esta libreria esta desarrollada pensando en las necesidades del desarrollador web, en caso desee verificar o validar los enlaces de un o varios archivos .md se encuentran aun vigentes, detallo a continuacion las opciones que podra ingresar y los resultados.
- Resultado al ingresar un directorio
- Resultado al ingresar una ruta
- Resultado al ingresar una opcion (--validate)
- Resultado al ingresar una opcion (--stats)
- Resultado al ingresar una opcion (--stats --validate)
- Resultado al ingresar un(ruta/directorio) y la opcion --help