The goal of urlchecker is to run the URL checks from R 4.1 in older versions of R and automatically update URLs as needed.
It also uses concurrent requests, so is generally much faster than the URL checks from the tools package.
Install the released version from CRAN
install.packages("urlchecker")Or the development version from GitHub:
# install.packages("pak")
pak::pak("r-lib/urlchecker")library(urlchecker)# `url_check()` will check all URLs in a package, as is done by CRAN when
# submitting a package.
url_check("path/to/pkg")
# `url_update()` will check all URLs in a package, then update any 301
# redirects automatically to their new location.
url_update("path/to/pkg")
# You can also point `url_check()` at a built source package tarball. It is
# unpacked into a temporary directory and checked from there. Because the
# tarball contains the rendered vignettes, this also checks URLs in the
# built vignettes.
tarball <- pkgbuild::build("path/to/pkg")
url_check(tarball)
# `url_check()` also works on non-package projects: point it at a directory
# that is not a package (all supported files within are scanned), a single
# file, or a mix of directories and files. Supported files are HTML, PDF, Rd,
# Markdown (`.md`), R Markdown (`.Rmd`) and Quarto (`.qmd`).
url_check("path/to/project")
url_check(c("README.md", "docs"))
Some URLs cannot be checked automatically, e.g. a link to a private
repository, or a page behind a login or captcha. List them in a
.urlignore file (in the project root, or under
tools/) to stop url_check() from requesting
and flagging them. Each line is a glob pattern:
# Ignore everything under our private org, and one specific page.
https://github.com/acme-private/*
https://example.com/behind-a-login
Note that CRAN’s own URL checks do not read .urlignore,
so an ignored URL may still be flagged when the package is submitted to
CRAN.
url_check() mirrors CRAN’s incoming URL checks, which
are controlled by a few environment variables. urlchecker uses the same
variables and defaults to the same values CRAN uses, so results match
what CRAN reports. Set a variable yourself to override the default.
_R_CHECK_URLS_HTTP_STATUS_IGNORE_REGEXP_ — HTTP
status codes to treat as OK rather than flag. Defaults to
"202|401|403|429" (Accepted, Unauthorized, Forbidden, Too
Many Requests), matching CRAN.
_R_CHECK_URLS_CURL_USER_AGENT_ — the
User-Agent header sent with each request. Defaults to the
browser-like string CRAN uses.
Please note that the urlchecker project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.