Markdown is a markup language lightweight very popular among developers. It is used on many platforms handle plain text (GitHub, forums, blogs, ...) and it is very common
find multiple files in that format in any kind of repository (starting with the traditional README.md).
These Markdown iles usually contain links that
many times they are broken or no longer valid and that greatly damages the value of
the information you want to share.
We develop a tool using Node.js, that read and parse files
in Markdown format, to verify with a http request the status of the links, and generate some statistics.
On the command line you must write:
npm install tinfantebonilla-md-links
Import the library with require()
const { mdLinks } = require("tinfantebonilla-md-links");This is the function you will use:
path: absolute or relative route to the file or directory.options: An object with only this property:validate: Boolean that determines if links need to be validated.
It returns a Promise that is resolved with an Array of objects, where every Object represents a link and contains these properties:
With validate:false :
href: URL that was found.text: Text inside the link (<a>).file: Files's route where the link was found.
With validate:true :
href: URL that was found.text: Text inside the link (<a>).file: Files's route where the link was found.status: Response HTTP Code.ok: Messagefailorok(if it was successful).
Examples (results as comments):
const { mdLinks } = require("jleon-md-links");
mdLinks("./some/example.md", { validate: false })
.then(
(links) => console.log(links)
// => [{ href, text, file }, ...]
)
.catch(console.error);
mdLinks("./some/example.md", { validate: true })
.then(
(links) => console.log(links)
// => [{ href, text, file, status, ok }, ...]
)
.catch(console.error);
mdLinks("./some/dir", { validate: false })
.then(
(links) => console.log(links)
// => [{ href, text, file }, ...]
)
.catch(console.error);
mdLinks("./some/dir", { validate: true })
.then(
(links) => console.log(links)
// => [{ href, text, file, status, ok }, ...]
)
.catch(console.error);This is the way you can use the executable file by the command line:
md-links <path-to-file> [options]
An example:
$ md-links ./some/example.md
./some/example.md http://something.com/2/3/ Link to something
./some/example.md https://otra-cosa.net/any-doc.html any doc
./some/example.md http://google.com/ GoogleAn example:
$ md-links ./some/example.md --validate
./some/example.md http://something.com/2/3/ Ok 200 Link to something
./some/example.md https://otra-cosa.net/any-doc.html Fail 404 any doc
./some/example.md http://google.com/ ok 301 GoogleAn example:
$ md-links ./some/example.md --stats
Total: 3
Unique: 3Also you can use both --stats and --validate (it doesn´t matter the order).
Examples:
$ md-links ./some/example.md --stats --validate
Total: 3
Unique: 3
Broken: 1$ md-links ./some/example.md --validate --stats
Total: 3
Unique: 3
Broken: 1
