--- title: "Devtools dependencies" author: "Jim Hester, Hadley Wickham" date: "`r Sys.Date()`" output: rmarkdown::html_vignette: keep_md: true vignette: > %\VignetteIndexEntry{Devtools dependencies} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # Package remotes Devtools version 1.9 supports package dependency installation for packages not yet in a standard package repository such as [CRAN](https://cran.r-project.org) or [Bioconductor](http://bioconductor.org). 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::], [type2::] ``` 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 = "first.last@example.com") Description: What the package does (one paragraph). License: MIT + file LICENSE Imports: rlang Remotes: r-lib/rlang ``` ### GitHub Because GitHub is the most commonly used unofficial package distribution in R, it's the default: ```yaml Remotes: hadley/testthat ``` 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. ```yaml Remotes: hadley/httr@v0.4, klutometis/roxygen#142, hadley/testthat@c67018fa4970 ``` A type of `github` can be specified, but is not required ```yaml Remotes: github::hadley/ggplot2 ``` ### Other sources All of the currently supported install sources are available, see the 'See Also' section in `?install` for a complete list. ```yaml # GitLab Remotes: gitlab::jimhester/covr # Git Remotes: git::git@bitbucket.org: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 ``` ### CRAN submission 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.