Skip to main content

Tips y recursos

Inicia con un diagrama de flujo y/o pseudocódigo

Este proyecto difiere de los anteriores en los que has trabajado, ya que no implica una interfaz web. Todo el desarrollo se llevará a cabo en tu editor y en la consola/terminal.

El proyecto se basa en un proceso lógico compuesto por diferentes pasos. Para comprender mejor lo que debes hacer y planificar tus tareas y objetivos, se recomienda desglosar el proceso en pasos y visualizarlo mediante un diagrama de flujo o escribiendo pseudocódigo

Sugerencias de implementación

La implementación de este proyecto tiene varias partes: leer del sistema de archivos, recibir argumentos a través de la línea de comando, analizar texto, hacer consultas HTTP, ... y todas estas cosas pueden enfocarse de muchas formas, tanto usando librerías como implementando en VanillaJS.

Por poner un ejemplo, el parseado (análisis) del Markdown para extraer los links podría plantearse de las siguientes maneras (todas válidas):

  • Usando un módulo como Markdown-it, que nos devuelve un arreglo de tokens que podemos recorrer para identificar los links.

  • También podríamos usar una combinación de varios módulos (podría ser válido transformar el Markdown a HTML usando algo como marked y de ahí extraer los links con una librería de DOM como JSDOM o Cheerio entre otras).

  • Usando un custom renderer de la librería marked (new marked.Renderer()).

  • Siguiendo otro camino completamente diferente, podríamos usar expresiones regulares (RegExp).

tip

No dudes en consultar a tus compañeras, coaches y/o el foro de la comunidad si tienes dudas existenciales con respecto a estas decisiones. No existe una "única" manera correcta 😉 Lo importante es que entiendas el código que escribes para lograr la tarea.

¿CommonJS Modules o ES Modules, cual debería usar?

Desde el principio, es importante que tomes una decisión respecto a qué tipo de módulos utilizarás: ES Modules (import/export) o CommonJS Modules (require/module.exports). Ambos cumplen el mismo propósito de modularizar y compartir código. Hasta ahora, Node.js ha empleado mayormente los CommonJS Modules (require) y funcionan sin necesidad de configuraciones adicionales. Sin embargo, en las versiones más recientes de Node.js, también puedes optar por utilizar ES Modules, aunque esto requerirá algunos pasos de configuración adicionales. Si decides utilizar ES Modules, asegúrate de investigar cómo configurar tu proyecto según la versión de Node que estés utilizando. Ten en cuenta esta decisión desde el inicio de tu proyecto, ya que afectará la forma en que importas y exportas módulos en tu código.

¿Cuáles son partes de node son relevantes para este proyecto?

Node ofrece una amplia gama de módulos y funciones, pero no es necesario conocerlos todos antes de comenzar a programar. Los hitos se refieren a partes específicas de Node que puedes explorar, como los módulos fs (readFile, readdirSync) y path. Estos módulos son útiles para realizar operaciones de lectura y escritura de archivos, así como para manipular y trabajar con rutas de archivos en tu código. A medida que avanzas en tu proyecto, puedes investigar más sobre estos módulos y cómo utilizar sus funciones para lograr tareas específicas. ¡No dudes en sumergirte en la programación y explorar los partes relevantes de Node mientras avanzas en tu proyecto!

¿Cómo hago para que mi módulo sea instalable con npm?

Para que el módulo sea instalable desde GitHub solo tiene que:

  • Estar en un repo público de GitHub
  • Contener un package.json válido

Con el comando npm install githubname/reponame podemos instalar directamente

Por ejemplo, el curriculum-parser que usamos para la currícula no está publicado en el registro público de NPM, así que lo instalamos directamente desde GitHub con el comando npm install Laboratoria/curriculum-parser.

Hito 1

Hito 2

Hito 3

Hito 4

Hito 5

Otros recursos

Para pedir project feedback

  • Un board en github projects con el backlog para la implementación de la librería.

  • un README.md con documentación técnica de la librería y una guía de uso e instalación de la librería.

  • un API mdLinks(path, validate) con los siguientes requisitos (Hito 1 y 2 son los mínimos):

    • El módulo debe exportar una función que cumpla con la interfaz (API) requerida. (Hito 1)
    • Deberá implementar el soporte para archivos individuales. (Hito 1)
    • Deberá implementar la funcionalidad de validación. (Hitos 1 y 2)
    • Deberá ofrecer soporte para directorios. (Hitos 1 al 3)
    • Deberá ofrecer soporte para directorios que pueden contener otros directorios. (Hitos 1 al 5)
  • un CLI (Command Line Interface) que se ejecuta sin errores y tiene el output esperado. Además acepta los parámetros --validate y --stats. Y expone un ejecutable md-links en el path (configurado en el package.json)

  • Pasa tests y linters (npm test). Tests unitarios cubren un mínimo del 70% de coverage tests, es decir statements, functions, lines y branches.