devtools v2.0.2
Monthly downloads
Tools to Make Developing R Packages Easier
Collection of package development tools.
Readme
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 inR/
, compiled shared objects insrc/
and data files indata/
. During development you usually want to access all functions (even un-exported internal ones) soload_all()
works as if all functions were exported in the packageNAMESPACE
.document()
updates generated documentation inman/
, file collation andNAMESPACE
.test()
reloads your code withload_all()
, then runs alltestthat
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 withlibrary()
. Reloading a package is not guaranteed to work: see the documentation forunload()
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 GitHubinstall_gitlab()
from GitLabinstall_bitbucket()
from Bitbucketinstall_url()
from an arbitrary urlinstall_git()
andinstall_svn()
from an arbitrary git or SVN repositoryinstall_local()
from a local file on diskinstall_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 theinstall_*
functions.
Check and release:
check()
updates the documentation, then builds and checks the package locally.check_win()
checks a package using win-builder, andcheck_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!
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.
RStudio community - package development is a great place to ask specific questions related to package development.
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.
There are a number of fantastic blog posts on writing your first package, including
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.
Functions in devtools
Name | Description | |
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. | |
No Results! |
Vignettes of devtools
Name | ||
dependencies.Rmd | ||
No Results! |
Last month downloads
Details
License | GPL (>= 2) |
URL | https://github.com/r-lib/devtools |
BugReports | https://github.com/r-lib/devtools/issues |
VignetteBuilder | knitr |
Encoding | UTF-8 |
RoxygenNote | 6.1.1 |
NeedsCompilation | no |
Packaged | 2019-04-08 15:34:15 UTC; jhester |
Repository | CRAN |
Date/Publication | 2019-04-08 20:03:38 UTC |
suggests | BiocManager , bitops , covr (>= 3.2.0) , crayon , curl (>= 0.9) , evaluate , foghorn (>= 1.1.0) , gmailr (> 0.7.0) , knitr , lintr (>= 0.2.1) , MASS , mockery , pingr , pkgdown , Rcpp (>= 0.10.0) , rhub (>= 1.0.2) , rmarkdown , roxygen2 (>= 6.1.0) , rversions , spelling (>= 1.1) , testthat (>= 1.0.2) , whisker |
imports | callr , cli , digest , git2r (>= 0.23.0) , httr (>= 0.4) , jsonlite , memoise (>= 1.0.0) , pkgbuild (>= 1.0.2) , pkgload (>= 1.0.1) , rcmdcheck (>= 1.3.2) , remotes (>= 2.0.2) , rstudioapi (>= 0.6.0.9000) , sessioninfo , stats , tools , usethis (>= 1.4.0) , utils , withr |
depends | R (>= 3.0.2) |
Contributors | RStudio, Hadley Wickham, Winston Chang, R Core team |
Include our badge in your README
[](http://www.rdocumentation.org/packages/devtools)