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 common tasks.

An R package is actually quite simple. A package is a template or set of conventions that structures your code. This not only makes sharing code easy, it reduces the time and effort required to complete you project: following a template removes the need to have to think about how to organize things and paves the way for the creation of standardised tools that can further accelerate your progress.

While package development in R can feel intimidating, devtools does every thing it can to make it less so. In fact, devtools comes with a small guarantee: if you get an angry e-mail from an R-core member because of a bug in devtools, forward me the email and your address and I'll mail you a card with a handwritten apology.

devtools is opinionated about package development. It requires that you use roxygen2 for documentation and testthat for testing. Not everyone would agree with this approach, and they are by no means perfect. But they have evolved out of the experience of writing over 30 R packages.

I'm always happy to hear about what doesn't work for you and where devtools gets in your way. Either send an email to the rdevtools mailing list or file an issue at the GitHub repository.

Updating to the latest version of devtools

You can track (and contribute to) the development of devtools at https://github.com/hadley/devtools. To install it:

  1. Install the release version of devtools from CRAN with install.packages("devtools").

  2. Make sure you have a working development environment.

    • Windows: Install Rtools.
    • Mac: Install Xcode from the Mac App Store.
    • Linux: Install a compiler and various development libraries (details vary across different flavors of Linux).
  3. Follow the instructions below depending on platform.

    • Mac and Linux:

      devtools::install_github("hadley/devtools")
    • Windows:

      library(devtools)
      build_github_devtools()
      
      #### Restart R before continuing ####
      install.packages("devtools.zip", repos = NULL, type = "source")
      
      # Remove the package after installation
      unlink("devtools.zip")

Package development tools

All devtools functions accept a path as an argument, e.g. load_all("path/to/path/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 so load_all() ignores the package NAMESPACE. load_all() will automatically create a DESCRIPTION if needed.

  • document() updates documentation, file collation and NAMESPACE.

  • test() reloads your code, then runs all testthat 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 to 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_bitbucket() from bitbucket,
    • install_url() from an arbitrary url and
    • install_local() from a local file on disk.
    • install_version() installs a specified version from cran.

Check and release:

  • check() updates the documentation, then builds and checks the package. build_win() builds a package using win-builder, allowing you to easily check your package on windows.

  • run_examples() will run all examples to make sure they work. This is useful because example checking is the last step of R CMD check.

  • check_man() runs most of the documentation checking components of R CMD check

  • release() makes sure everything is ok with your package (including asking you a number of questions), then builds and uploads to CRAN. It also drafts an email to let the CRAN maintainers know that you've uploaded a new package.

Other tips

I recommend adding the following code to your .Rprofile:

.First <- function() {
  options(
    repos = c(CRAN = "https://cran.rstudio.com/"),
    browserNLdisabled = TRUE,
    deparse.max.lines = 2)
}

if (interactive()) {
  suppressMessages(require(devtools))
}

See the complete list in ?devtools

This will set up R to:

  • always install packages from the RStudio CRAN mirror
  • ignore newlines when browse()ing
  • give minimal output from traceback()
  • automatically load devtools in interactive sessions

There are also a number of options you might want to set (in .Rprofile) to customise the default behaviour when creating packages and drafting emails:

  • devtools.name: your name, used to sign emails
  • devtools.desc.author: your R author string, in the form of "Hadley Wickham <h.wickham@gmail.com> [aut, cre]". Used when creating default DESCRIPTION files.
  • devtools.desc.license: a default license used when creating new packages

Code of conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Copy Link

Version

Install

install.packages('devtools')

Monthly Downloads

267,212

Version

1.12.0

License

GPL (>= 2)

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

December 5th, 2016

Functions in devtools (1.12.0)

build

Build package.
build_vignettes

Build package vignettes.
check_cran

Check a package from CRAN.
build_github_devtools

Build the development version of devtools from GitHub.
bash

Open bash shell in package directory.
check_man

Check documentation, as R CMD check does.
check_failures

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

Check that the version of an imported package satisfies the requirements
clean_source

Sources an R file in a clean environment.
clean_dll

Remove compiled objects from /src/ directory
devtools

Package development tools for R.
in_dir

Deprecated Functions
dev_meta

Return devtools metadata environment
dev_help

Read the in-development help for a package loaded with devtools.
compile_dll

Compile a .dll/.so from source.
create

Creates a new package, following all devtools package conventions.
dev_example

Run a examples for an in-development function.
dev_packages

Return a vector of names of packages loaded by devtools
clean_vignettes

Clean built vignettes.
check

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

Default compiler flags used by devtools.
create_description

Create a default DESCRIPTION file for a package.
eval_clean

Evaluate code in a clean R session.
dr_github

Diagnose potential GitHub issues
devtest

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

Diagnose potential devtools issues
imports_env

Return imports environment for a package
document

Use roxygen to document a package.
has_tests

Was devtools installed with tests?
install_bioc

Install a package from a Bioconductor repository
find_topic

Find the rd file that documents a topic.
inst

Get the installation path of a package
dev_mode

Activate and deactivate development mode.
infrastructure

Add useful infrastructure to a package.
github_pat

Retrieve Github personal access token.
install_svn

Install a package from a SVN repository
github_pull

GitHub references
has_devel

Check if you have a development environment installed.
install_cran

Attempts to install a package from CRAN.
install_deps

Install package dependencies if needed.
install_local

Install a package from a local file
help

Drop-in replacements for help and ? functions
install

Install a local development package.
load_imports

Load all of the imports for a package
install_github

Attempts to install a package directly from GitHub.
install_git

Install a package from a git repository
load_data

Load data.
lint

Lint all source files in a package.
install_version

Install specified version of a CRAN package.
install_url

Install a package from a url
package_file

Find file in a package.
install_bitbucket

Install a package directly from bitbucket
r_env_vars

Environment variables to set when calling R
missing_s3

Find missing s3 exports.
load_all

Load complete package.
parse_ns_file

Parses the NAMESPACE file for a package
load_code

Load R code.
release_checks

Custom devtools release checks.
loaded_packages

Return a vector of names of attached packages
ns_env

Return the namespace environment for a package.
release

Release package to CRAN.
setup_rtools

Find rtools.
reload

Unload and reload package.
parse_deps

Parse package dependency strings.
on_path

Test if an object is on the path.
revdep_email

Experimental email notification system.
system_output

Run a system command and capture the output.
show_news

Show package news
submit_cran

Submit a package to CRAN.
unload

Unload a package
system_check

Run a system command and check if it succeeds.
source_url

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

Is the object a package?
uninstall

Uninstall a local development package.
load_dll

Load a compiled DLL
pkg_env

Return package environment
RCMD

Run R CMD xxx from within R
build_win

Build windows binary package.
use_git

Initialise a git repository.
use_data

Use data in a package.
use_news_md

Use NEWS.md
use_github

Connect a local repo with GitHub.
use_readme_rmd

Create README files.
update_packages

Update packages that are missing or out-of-date.
as.package

Coerce input to a package.
use_package

Use specified package.
with_debug

Temporarily set debugging compilation flags.
wd

Set working directory.
path

Get/set the PATH variable.
revdep

Reverse dependency tools.
package_deps

Find all dependencies of a CRAN or dev package.
run_pkg_hook

Run user and package hooks.
run_examples

Run all examples in a package.
session_info

Print session information
revdep_check_save_summary

Run R CMD check on all downstream dependencies.
source_gist

Run a script on gist
spell_check

Spell checking
system.file

Replacement version of system.file
test

Execute all test_that tests in a package.
use_git_hook

Add a git hook.
use_github_links

Add GitHub links to DESCRIPTION.
use_data_raw

Use data-raw to compute package datasets.
use_build_ignore

Add a file to .Rbuildignore