Learn R Programming

⚠️There's a newer version (2.4.5) of this package.Take me there.

devtools

The aim of devtools is to make package development easier by providing R functions that simplify and expedite common tasks. R Packages is a book based around this workflow.

Installation

# Install devtools from CRAN
install.packages("devtools")

# Or the development version from GitHub:
# install.packages("devtools")
devtools::install_github("r-lib/devtools")

Cheatsheet

Usage

All devtools functions accept a path as an argument, e.g. load_all("path/to/mypkg"). If you don't specify a path, devtools will look in the current working directory - this is recommended practice.

Frequent development tasks:

  • load_all() simulates installing and reloading your package, loading R code in R/, compiled shared objects in src/ and data files in data/. During development you usually want to access all functions (even un-exported internal ones) so load_all() works as if all functions were exported in the package NAMESPACE.

  • document() updates generated documentation in man/, file collation and NAMESPACE.

  • test() reloads your code with load_all(), then runs all testthat tests.

  • test_coverage() runs test coverage on your package with covr. This makes it easy to see what parts of your package could use more tests!

Building and installing:

  • install() reinstalls the package, detaches the currently loaded version then reloads the new version with library(). Reloading a package is not guaranteed to work: see the documentation for unload() for caveats.

  • build() builds a package file from package sources. You can use it to build a binary version of your package.

  • install_* functions install an R package:

    • install_github() from GitHub
    • install_gitlab() from GitLab
    • install_bitbucket() from Bitbucket
    • install_url() from an arbitrary url
    • install_git() and install_svn() from an arbitrary git or SVN repository
    • install_local() from a local file on disk
    • install_version() from a specific version on CRAN
  • update_packages() updates a package to the latest version. This works both on packages installed from CRAN as well as those installed from any of the install_* functions.

Check and release:

  • check() updates the documentation, then builds and checks the package locally. check_win() checks a package using win-builder, and check_rhub() checks a package using r-hub. This allows you to easily check your package on all systems CRAN uses before submission.

  • release() makes sure everything is ok with your package (including asking you a number of questions), then builds and uploads to CRAN.

Learning more

R package development can be intimidating, however there are now a number of valuable resources to help!

  1. R Packages is a book that gives a comprehensive treatment of all common parts of package development and uses devtools throughout.

    • The first edition is available at http://r-pkgs.had.co.nz, but note that it has grown somewhat out of sync with the current version of devtools.
    • A second edition is under development and is evolving to reflect the current state of devtools. It is available at https://r-pkgs.org.
    • The Whole Game and Package structure chapters make great places to start.
  2. RStudio community - package development is a great place to ask specific questions related to package development.

  3. rOpenSci packages has extensive documentation on best practices for R packages looking to be contributed to rOpenSci, but also very useful general recommendations for package authors.

  4. There are a number of fantastic blog posts on writing your first package, including

  5. Writing R Extensions is the exhaustive, canonical reference for writing R packages, maintained by the R core developers.

Conscious uncoupling

devtools started off as a lean-and-mean package to facilitate local package development, but over the years it accumulated more and more functionality. Currently devtools is undergoing a conscious uncoupling to split out functionality into smaller, more tightly focussed packages. This includes:

  • testthat: Writing and running tests (i.e. test()).

  • roxygen2: Function and package documentation (i.e. document()).

  • remotes: Installing packages (i.e. install_github()).

  • pkgbuild: Building binary packages (including checking if build tools are available) (i.e. build()).

  • pkgload: Simulating package loading (i.e. load_all()).

  • rcmdcheck: Running R CMD check and reporting the results (i.e. check()).

  • revdepcheck: Running R CMD check on all reverse dependencies, and figuring out what's changed since the last CRAN release (i.e. revdep_check()).

  • sessioninfo: R session info (i.e. session_info()).

  • usethis: Automating package setup (i.e. use_test()).

Generally, you should not need to worry about these different packages, because devtools installs them all automatically. 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.

Code of conduct

Please note that the devtools project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Copy Link

Version

Install

install.packages('devtools')

Monthly Downloads

296,506

Version

2.0.2

License

GPL (>= 2)

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

April 8th, 2019

Functions in devtools (2.0.2)

build_vignettes

Build package vignettes.
clean_vignettes

Clean built vignettes.
dev_mode

Activate and deactivate development mode.
is.package

Is the object a package?
as.package

Coerce input to a package.
lint

Lint all source files in a package.
build

Build package
release

Release package to CRAN.
build_manual

Create package pdf manual
bash

Open bash shell in package directory.
check_rhub

Run CRAN checks for package on R-hub
dev_packages

Return a vector of names of packages loaded by devtools
check_win

Build windows binary package.
install

Install a local development package.
github_pat

Retrieve GitHub personal access token.
devtest

Return the path to one of the packages in the devtools test dir
release_checks

Custom devtools release checks.
install_deps

Install package dependencies if needed.
submit_cran

Submit a package to CRAN.
system_check

Run a system command and check if it succeeds.
has_tests

Was devtools installed with tests?
run_examples

Run all examples in a package.
r_env_vars

Environment variables to set when calling R
save_all

Save all documents in an active IDE session.
source_url

Run a script through some protocols such as http, https, ftp, etc.
spell_check

Spell checking
check_failures

Parses R CMD check log file for ERRORs, WARNINGs and NOTEs
check_man

Check documentation, as R CMD check does.
document

Use roxygen to document a package.
reexports

Objects exported from other packages
dr_devtools

Diagnose potential devtools issues
load_all

Load complete package.
loaded_packages

Return a vector of names of attached packages
build_readme

Build a Rmarkdown README for a package
missing_s3

Find missing s3 exports.
package_file

Find file in a package.
system_output

Run a system command and capture the output.
test

Execute test_that tests in a package.
uninstall

Uninstall a local development package.
wd

Set working directory.
build_site

Execute pkgdown build_site in a package
check_cran

Deprecated Functions
devtools

Package development tools for R.
dr_github

Diagnose potential GitHub issues
git_checks

Git checks.
reload

Unload and reload package.
revdep

Reverse dependency tools.
show_news

Show package news
source_gist

Run a script on gist
check

Build and check a package, cleaning up automatically on success.