
Generally in these cases it is better to depend on the particular package directly rather than depend on devtools, e.g. use sessioninfo::session_info() rather than devtools::session_info(), or remotes::install_github() vs devtools::install_github(). You may also need to care if you are trying to use some devtools functionality in your own package or deployed application. You will need to care, however, if you’re filing a bug because reporting it at the correct place will lead to a speedier resolution. Generally, you would not need to worry about these different packages, because devtools installs all of them automatically. Revdepcheck: Running R CMD check on all reverse dependencies, and figuring out what’s changed since the last CRAN release (i.e. Rcmdcheck: Running R CMD check and reporting the results (i.e. Pkgload: Simulating package loading (i.e. Pkgbuild: Building binary packages (including checking if build tools are available) (i.e. Roxygen2: Function and package documentation (i.e. Testthat: Writing and running tests (i.e.

devtools has undergone a conscious uncoupling to split out functionality into smaller, more tightly focussed packages. Writing R Extensions is the exhaustive, canonical reference for writing R packages, maintained by the R core developers.ĭevtools started off as a lean-and-mean package to facilitate local package development, but over the years it accumulated more and more functionality.

The Whole Game and Package structure chapters make great places to start.A second edition is under development and is evolving to reflect the current state of devtools.

The first edition is available at, but note that it has grown somewhat out of sync with the current version of devtools.R Packages is a book that gives a comprehensive treatment of all common parts of package development and uses devtools throughout. R package development can be intimidating, however there are now a number of valuable resources to help!
