A curated list of awesome tools to assist R ๐ฆ development.
Note before:
- Not all tools are available on CRAN; some might be available only via GitHub or GitLab.
- Only tools helpful for package development are included, and not other resources (like books, talks, presentations, etc.).
If you wish to suggest any additional tools, please make a PR request or raise an issue here.
Please note that the awesome-r-pkgtools
project is released with a
Contributor Code of
Conduct.
By contributing to this project, you agree to abide by its terms.
If you are not using the latest release of
pandoc, please change only the
README.Rmd
document.
Tools useful across all stages of package development (some of these are meta-packages and their component packages are also included in respective sections for the sake of completeness).
-
{golem}
(framework for building shiny applications) -
{leprechaun}
(leaner framework for building shiny applications) -
{fusen}
({rmarkdown}
-based) -
{pkgverse}
(for package meta-verse) -
{metamakr}
(for package meta-verse)
-
{available}
(to check if a package name is available to use) -
{collidr}
(to check for namespace collisions) -
{changer}
(to change the name of an existing R package)
-
{rprojroot}
(accessing files w.r.t. package root directory) -
{desc}
(manipulatingDESCRIPTION
files) -
{withr}
(to manage package side effects by safely and temporarily modifying global states) -
{pkgload}
(to simulate the process of installing and loading a package) -
{pkgbuild}
(to find tools needed to build packages)
{pkgcache}
(to cache โCRANโ-like metadata and packages)
-
{Rd2roxygen}
(in case you inherit a project where documentation was not written using{roxygen2}
) -
{sinew}
(generate{roxygen2}
skeletons) -
{roclang}
(helpers for diffusing content across function documentation) -
{Rdpack}
(for inserting references, figures, and evaluated examples in Rd docs) -
{roxygen2md}
(using Markdown syntax in package documentation) -
{rd2list}
(converts Rd docs to a human-readable list) -
roxygen2Comment
(Rstudio addin for adding and remove{roxygen2}
comment)
-
{prettydoc}
(creates lightweight yet pretty vignettes) -
{learnr}
(interactive tutorials)
-
{pkgdown}
(static website for package documentation) -
{gitdown}
(software changes as a gitbook) -
{altdoc}
(use docute or docsify to create a static website for package documentation)
{potools}
(for translating messages and checking the โhealthโ of the messaging corpus)
{lifecycle}
(to manage the life cycle of exported functions)
-
hexwall
(to create a wall of hexstickers)
-
{docreview}
(to check quality of docs) -
{spelling}
(to spell check) -
{gramr}
(for grammar suggestions)
-
{vdiffr}
(visual regression testing) -
{mockthat}
(function mocking for unit testing to third-party packages) -
{roxytest}
(inline{testthat}
tests with{roxygen2}
) -
{exampletestr}
(tests based on package examples) -
{shinytest}
(testing Shiny apps) -
{testdown}
(turn{testthat}
results into a{bookdown}
project) -
{httptest}
(a test environment for HTTP requests in R) -
{httptest2}
(the same for{httr2}
package) -
{r-hedgehog}
(property based testing)
-
{goodpractice}
(Swiss army knife for good practices) -
{pkgcheck}
(checks if package follows good practices recommended for packages in therOpenSci
ecosystem)
-
{covr}
(computes code coverage) -
{covrpage}
(provides summaryREADME
of code coverage and corresponding tests)
{cyclocomp}
(to index the complexity of a function)
-
{styler}
(especially relevant if you follow{tidyverse}
style guide) -
AlignAssign
(RStudio addin)
-
{pkgdepends}
(to find recursive dependencies of from various sources) -
{deepdep}
(to visualize and explore package dependencies) -
{itdepends}
(to assess usage, measure weights, visualize proportions, and assist removal of dependencies) -
{DependenciesGraphs}
(to visualize package dependencies) -
{pkgnet}
(build a graph representation of a package and its dependencies) -
{pkgndep}
(checks the heaviness of the packages used) -
{oysteR}
(secure package against insecure dependencies)
-
{rcmdcheck}
(runR CMD check
form R programmatically) -
{rhub}
(to runR CMD check
on CRAN architectures) -
{checkhelper}
(submission help) -
{foghorn}
(check results and submission portal status) -
{urlchecker}
(URL checks)
-
{cranlogs}
(computing CRAN download counts) -
{packageRank}
(visualizing CRAN download counts)
CI/CD: continuous integration and either continuous delivery or continuous deployment
-
actions
(for GitHub Actions) -
r-appveyor
(for AppVeyor) -
{tic}
(for Circle CI and GitHub Actions) -
{jenkins}
(for Jenkins CI) -
{cronR}
(to schedule R scripts/processes with the cron scheduler)
{fakemake}
(to mock Unix Make build system in case it is unavailable)
{valtools}
(in clinical research and drug development)
-
{checkmate}
(argument checks) -
{pkgcond}
(better error messages for package users)
-
{packagemetrics}
(for comparing among packages)
-
{xfun}
(specifically,xfun::rev_check()
)
To thank the contributors or maintainers of packages you rely on.
-
{memtools}
(to solve memory leaks)
-
{TODOr}
(RStudio addin to list things that you need to do or change) -
{prefixer}
(prefix function with their namespace ) -
{gitignore}
(to fetch gitignore templates) -
{touchstone}
(benchmarking pull requests) -
{precommit}
(pre-commit hooks) -
{DIZutils}
(helpers for packages dealing with database connections)