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

md-links-mnds

v0.1.1

Published

CLI para ler e extrair informações de links em arquivos Markdown locais, em diretórios e subdiretórios

Downloads

10

Readme

Markdown Links

Índice


1. Resumo do projeto

Markdown é uma linguagem de marcação muito popular entre os programadores. É usada em muitas plataformas que manipulam texto (GitHub, fórum, blogs e etc) e é muito comum encontrar arquivos com este formato em qualquer repositório (começando pelo tradicional README.md).

Os arquivos Markdown normalmente contém links que podem estar quebrados, ou que já não são válidos, prejudicando muito o valor da informação que está ali.

O objetivo desta aplicação foi desenvolver uma ferramenta de linha de comando (CLI) que lê e analisa arquivos no formato Markdown, para verificar os arquivos que contenham links e mostrar algumas estatísticas para obter informações relevantes desses links. A biblioteca tem como objetivo de ser utilizada por linha de comando, porém também pode ser importado com require para ser utilizado em outros códigos. A biblioteca e script executável foram implementados em JavaScript para serem executadas com Node.JS.

2. Como instalar o módulo

Utilize o seguinte comando no terminal:

 $ npm i md-links-mnds

Verifique se você contém arquivos markdown locais para a execução.

OBS: Os arquivos markdown válidos contém as seguintes extensões: '.md', '.mkd', '.mdwn', '.mdown', '.mdtxt', '.mdtext', '.markdown', '.text'.

3. Informações da aplicação:

1) JavaScript API

O módulo deve ser importado em outros scripts Node.js e oferece a seguinte interface:

mdLinks(path, options)

Argumentos
  • path: Rota ao arquivo ou diretório.
  • options: Um objeto com a seguinte propriedade:
    • validate: Um booleano que determina se deseja validar os links encontrados.
    • stats: Booleano que determina se deseja obter um output com informações estatísticas gerais.
Valor de retorno

A função retorna uma promessa (Promise) que resolve um array de objetos, onde cada objeto representa um link, contendo as seguintes propriedades:

Com validate:false :

  • href: URL encontrada.
  • text: Texto que irá aparecer dentro de um link (<a>).
  • file: Rota do arquivo onde foi encontrado o link.

Com 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 resposta HTTP.
  • ok: Mensagem fail em caso de falha ou ok em caso de sucesso.

Exemplo


const mdLinks = require("md-links");

mdLinks("./some/example.md")
  .then(links => {
    // => [{ href, text, file }, ...]
  })
  .catch(console.error);

mdLinks("./some/example.md", { validate: true })
  .then(links => {
    // => [{ href, text, file, status, ok }, ...]
  })
  .catch(console.error);

mdLinks("./some/dir")
  .then(links => {
    // => [{ href, text, file }, ...]
  })
  .catch(console.error);

2) CLI (Command Line Interface - Interface de Linha de Comando)

Executando na CLI

O executável da aplicação pode ser executado da seguinte maneira, através do terminal:

 $ md-links <path-to-file>

Valor de retorno:

  • href: URL encontrada.
  • text: Texto que aparecia dentro do link (<a>).
  • file: Rota do arquivo onde foi encontrado o link.

Validando os links

Para obter informações mais precisas do estado atual dos links, você pode adicionar a opção --validate:

$ md-links <path-to-file> --validate

Valor de retorno:

  • href: URL encontrada.
  • text: Texto que aparecia dentro do link (<a>).
  • file: Rota do arquivo onde foi encontrado o link.
  • status: Código de resposta HTTP.
  • ok: Mensagem fail em caso de falha ou ok em caso de sucesso.

Verificando links totais e únicos

Se você precisa verificar a quantidade de links, adicione a opção --stats:

$ md-links <path-to-file> --stats

Valor de retorno:

  • Total: Total de links encontrados no arquivo/diretório.
  • Unique: Quantidade de links únicos (que não se repetem).

Combinando --stats e --validate

Utilize essa combinação para verificar, além da quantidade, os links quebrados:

$ md-links <path-to-file> --stats --validate

Valor de retorno:

  • Total: Total de links encontrados no arquivo/diretório.
  • Unique: Quantidade de links únicos (que não se repetem).
  • Broken: Quantidade de links quebrados.

4. Fluxograma

Um fluxograma foi definido antes do código para definir os próximos passos e organização do projeto.

fluxograma-mdlinks

5. Testes

  • Foi utilizado o Jest para a execução dos testes unitários.

testes-unitários

6. Tecnologias utilizadas

7. Contato