Introduction
devtools 2.2.1 is now on CRAN!
devtools makes package development easier by providing R functions that simplify and expedite common tasks. R Packages is a book based around this workflow, which you can read online for free ( 1st edition, in-progress 2nd edition).
Apart from the new features mentioned below this release also contains a number of smaller changes and bug fixes. As always a complete list of all the changes is available in the package Changelog.
New features
create()
The create()
function has been re-added to the package. This functions was
previously removed in favor of usethis::create_package()
but it turns out the
RStudio IDE uses devtools::create()
as part of its create new project dialog,
so removing the function would break this functionality in older versions of
RStudio. create()
is however simply an alias for usethis::create_package()
,
so you are free to use whichever you would prefer in your own use.
dev_sitrep()
A new function dev_sitrep()
can be used to get a “situation report” about
your development setup. This is important when working on your own packages,
but also to help people get up and running quickly during developer events such
as the
Tidyverse Dev Days. It
provides a series of checks that you have the latest versions of R, RStudio,
RTools and package dependencies, along with instructions on how to update them
if needed.
ellipsis
The
ellipsis package provides a function
check_dots_used()
which ensures that all arguments specified in ...
have
been used. Devtools uses ...
to pass arguments down to base R functions such
as install.packages()
. If the arguments are invalid, such as mis-typing a
argument name they would often be silently ignored rather than throwing an
error. Using ellipsis instead causes a full error to occur in these cases,
catching many more bugs when they happen. check_dots_used()
is now used for
any devtools function taking ...
.
devtools 2.2.1 introduces a new option devtools.ellipsis_action
to control
the behavior of ellipsis in devtools. Because there are some cases, like when a
given package is already installed, that devtools does not actually use any of
the arguments in ...
.
devtools.ellipsis_action
takes one of the following arguments
rlang::abort
- to emit an error if arguments are unusedrlang::warn
- to emit a warning if arguments are unusedrlang::inform
- to emit a message if arguments are unusedrlang::signal
- to emit a message if arguments are unused
Using rlang::signal
will produce no output unless the custom condition is
caught, so it is the best way to retain backwards compatibility with devtools
behavior prior to 2.2.0.
Acknowledgements
We are of grateful to all of the 29 people who contributed not just code, but also issues and comments for this release: @amit0thesingularity, @bbimber, @Cervangirard, @dachosen1, @DavisVaughan, @deslaur, @djnavarro, @DSLituiev, @DzLGasoline, @f527, @hadley, @hrbrmstr, @IndrajeetPatil, @jameslamb, @jennybc, @jimhester, @jrowen, @k-doering-NOAA, @mezerji1365, @MichaelChirico, @neonira, @njtierney, @p-rocha, @programgirl, @realDongWang, @RoundNose, @rstub, @tbates, and @TomKellyGenetics