check-links
Robustly checks an array of URLs for liveness.
For each URL, it first attempts an HTTP HEAD request, and if that fails it will attempt
an HTTP GET request, retrying several times by default with exponential falloff.
This module handles concurrency and retry logic so you can check the status of thousands
of links quickly and robustly.
Install
This module requires node >= 14.17
.
npm install --save check-links
yarn add check-links
pnpm add check-links
Note: this package uses ESM and no longer provides a CommonJS export. See here for more info on how to use ESM modules.
Usage
import checkLinks from 'check-links'
const results = await checkLinks(['https://foo.com', 'https://404.com'])
results['https://foo.com']
results['https://404.com']
const results2 = await checkLinks(['https://foo.com', 'https://404.com'], {
concurrency: 1,
timeout: { request: 30000 },
retry: { limit: 1 }
})
- Supports HTTP and HTTPS urls.
- Defaults to a 30 second timeout per HTTP request with 2 retries.
- Defaults to a Mac OS Chrome
user-agent
. - Defaults to following redirects.
- All options use a got options object.
API
Robustly checks an array of URLs for liveness.
For each URL, it first attempts an HTTP HEAD request, and if that fails it will attempt
an HTTP GET request, retrying several times by default with exponential falloff.
Returns a Map<String, LivenessResult>
that maps each input URL to an object
containing status
and possibly statusCode
.
LivenessResult.status
will be one of the following:
alive
if the URL is reachable (2XX status code)dead
if the URL is not reachableinvalid
if the URL was parsed as invalid or used an unsupported protocol
LivenessResult.statusCode
will contain an integer HTTP status code if that URL resolved
properly.
Type: function (urls, opts)
urls
array<string> Array of urls to testopts
object? Optional configuration options (any extra options are passed to got)
opts.concurrency
number Maximum number of urls to resolve concurrently (optional, default 8
)
Related
License
MIT © Travis Fischer
Support my OSS work by following me on twitter