npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nati-md-links

v1.0.6

Published

<img src="https://github.com/Natalia392/DEV007-md-links/blob/main/imgsreadme/fotoReadme.png?raw=true" alter="backlog5" width="700">

Downloads

5

Readme

Markdown Links


Índice


1. Preámbulo

Markdown es un lenguaje de marcado ligero muy popular entre developers.

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.

Este proyecto nace dentro de la propuesta dentro de una comunidad de código abierto de crear una herramienta de línea de comando (CLI) usando Node.js, que lea y analice archivos en formato Markdown, para verificar los links que contengan yreportar estadísticas respecto de estos links.

2. Diagrama de Flujo

Para desarrollar esta aplicación, se creó un diagrama de flujo que sirviera como guía del proceso de la función:

Diagrama de flujo

3. Documentación técnica

Para instalar la librería en su computador, ingrese el siguiente comando en su terminal:

npm i nati-md-links

Tras ejectutar este comando, se instalará el programa y se podrá llamar con el siguiente comando:

npx mdl

La herramienta ejecuta la función mdLinks, que recibe una ruta y puede recibir también algunas opciones.

A continuación se explica cómo ejecutar con opciones:

mdLinks(path, options)

Argumentos

Los argumentos que recibe la función son dos:

  • path: Ruta absoluta o relativa al archivo o directorio. Si la ruta pasada es relativa, debe resolverse como relativa al directorio desde donde se invoca node - current working directory).
  • options: Un objeto con únicamente la siguiente propiedad:
    • validate: Booleano que determina si se desea validar los links encontrados.
Valor de retorno

La función retorna una promesa (Promise) que se resueve en 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.

Dependiendo de qué opciones se pasen en el segundo argumento, entregará estos distintos detalles. Esto se puede ver en más profundidad en la guía de uso a continuación.

4. Guía de uso

La aplicación se ejectua de la siguiente manera a través de la terminal:

mdL path-to-file [options]

Siguiendo el paso de instalación indicado más arriba esto puede resolverse en los siguientes 4 modos de ejecución:

1. Sin indicar options

Este es el comportamiento por defecto, sin opciones. Se usa ejecutando el siguiente comando:

npx mdl path-to-file

Este no valida 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 imprime los links que encuentra, junto con la ruta del archivo donde aparece y el texto que hay dentro del link (truncado a 50 caracteres).

Aquí un ejemplo:

$ md-links ./some/example.md
./some/example.md http://algo.com/2/3/ Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html algún doc
./some/example.md http://google.com/ Google

2. Pasando la opción --validate

Esto se haría ejecutando el siguiente comando:

npx mdl path-to-file --validate

Si pasamos 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 ./some/example.md --validate
./some/example.md http://algo.com/2/3/ ok 200 Link a algo
./some/example.md https://otra-cosa.net/algun-doc.html fail 404 algún doc
./some/example.md http://google.com/ ok 301 Google

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.

3. Pasando la opción --stats

Esto se hace ejecutando el comando:

npx mdl path-to-file --stats

En este caso el output (salida) será un texto con estadísticas básicas sobre los links.

$ md-links ./some/example.md --stats
Total: 3
Unique: 3

4. Pasando tanto la opción --validate como la opción --stats

Eso se haría ejecutando el comando:

npx mdl path-to-file --stats --validate

o bien

npx mdl path-to-file --validate --stats

Esto permite obtener las estadísticas de los links que funcionan y los links que están rotos, además del total de links y links únicos.

$ md-links ./some/example.md --stats --validate
Total: 3
Unique: 3
Broken: 1
working: 2

Aquí, el orden de los comandos no cambia el resultado, es decir, puede indicarse primero --validate y luego --stats y viceversa.

5. Backlog producto

A continuación se presentan las tareas asignadas para completar el proyecto:

6. Tecnologías utilizadas

Javascript

  • Manejo de arrays
  • Manejo de objetos
  • Condicionales
  • Funciones
  • Promesas
  • Recursividad
  • Callbacks

Node.js

  • Configuració package.json
  • Módulo process
  • Fie System (fs, path)
  • Instalar y usar módulos con npm

Axios

  • get para consulta HTTP

Jest

  • Pruebas unitarias
  • Mocks

Git

  • Control de versiones (init, clone, add, commit, status, push, pull)
  • Integración de cambios en ramas (branch, checkout, merge)

GitHub

  • (branches | forks | pull requests)
  • Organización en gitHub (projects | issues | labels | milestones)

Eslint

Npm para la publicación del proyecto

Visual Studio Code

Chalk

Babel