Devtools version 1.9 supports package dependency installation for packages not yet in a standard package repository such as CRAN or Bioconductor.
You can mark any regular dependency defined in the
Depends
, Imports
, Suggests
or
Enhances
fields as being installed from a remote location
by adding the remote location to Remotes
in your
DESCRIPTION
file. This will cause devtools to download and
install them prior to installing your package (so they won’t be
installed from CRAN).
The remote dependencies specified in Remotes
should be
described in the following form.
Remotes: [type::]<Repository>, [type2::]<Repository2>
The type
is an optional parameter. If the type is
missing the default is to install from GitHub. Additional remote
dependencies should be separated by commas, just like normal
dependencies elsewhere in the DESCRIPTION
file.
It is important to remember that you must always declare the
dependency in the usual way, i.e. include it in
Depends
, Imports
, Suggests
or
Enhances
. The Remotes
field only provides
instructions on where to install the dependency from. In this example
DESCRIPTION
file, note how rlang appears in
Imports
and in Remotes
:
Package: xyz
Title: What the Package Does (One Line, Title Case)
Version: 0.0.0.9000
Authors@R:
person(given = "First",
family = "Last",
role = c("aut", "cre"),
email = "[email protected]")
Description: What the package does (one paragraph).
License: MIT + file LICENSE
Imports:
rlang
Remotes:
r-lib/rlang
Because GitHub is the most commonly used unofficial package distribution in R, it’s the default:
You can also specify a specific hash, tag, or pull request (using the
same syntax as install_github()
if you want a particular
commit. Otherwise the latest commit on the HEAD of the branch is
used.
Remotes: hadley/[email protected],
klutometis/roxygen#142,
hadley/testthat@c67018fa4970
A type of github
can be specified, but is not
required
All of the currently supported install sources are available, see the
‘See Also’ section in ?install
for a complete list.
# GitLab
Remotes: gitlab::jimhester/covr
# Git
Remotes: git::[email protected]:djnavarro/lsr.git
# Bitbucket
Remotes: bitbucket::sulab/mygene.r@default, djnavarro/lsr
# Bioconductor
Remotes: bioc::3.3/SummarizedExperiment#117513, bioc::release/Biobase
# SVN
Remotes: svn::https://github.com/tidyverse/stringr
# URL
Remotes: url::https://github.com/tidyverse/stringr/archive/main.zip
# Local
Remotes: local::/pkgs/testthat
# Gitorious
Remotes: gitorious::r-mpc-package/r-mpc-package
When you submit your package to CRAN, all of its dependencies must
also be available on CRAN. For this reason, release()
will
warn you if you try to release a package with a Remotes
field.