usethis is a workflow package: it automates repetitive tasks that arise during project setup and development, both for R packages and non-package projects.
Installation
Install the released version of usethis from CRAN:
install.packages("usethis")
Or install the development version from GitHub with:
# install.packages("pak")
pak::pak("r-lib/usethis")
Usage
Most use_*()
functions operate on the active project: literally, a
directory on your computer. If youโve just used usethis to create a new
package or project, that will be the active project. Otherwise, usethis
verifies that current working directory is or is below a valid project
directory and that becomes the active project. Use proj_get()
or
proj_sitrep()
to manually query the project and read more in the
docs.
A few usethis functions have no strong connections to projects and will expect you to provide a path.
usethis is quite chatty, explaining what itโs doing and assigning you
tasks. โ
indicates something usethis has done for you. โ
indicates
that youโll need to do some work yourself.
Below is a quick look at how usethis can help to set up a package. But remember, many usethis functions are also applicable to analytical projects that are not packages.
library(usethis)
# Create a new package -------------------------------------------------
path <- file.path(tempdir(), "mypkg")
create_package(path)
#> โ Creating '/tmp/RtmpPqIkgo/mypkg/'
#> โ Setting active project to '/private/tmp/RtmpPqIkgo/mypkg'
#> โ Creating 'R/'
#> โ Writing 'DESCRIPTION'
#> Package: mypkg
#> Title: What the Package Does (One Line, Title Case)
#> Version: 0.0.0.9000
#> Authors@R (parsed):
#> * First Last <[email protected]> [aut, cre] (YOUR-ORCID-ID)
#> Description: What the package does (one paragraph).
#> License: `use_mit_license()`, `use_gpl3_license()` or friends to pick a
#> license
#> Encoding: UTF-8
#> Roxygen: list(markdown = TRUE)
#> RoxygenNote: 7.2.3
#> โ Writing 'NAMESPACE'
#> โ Setting active project to '<no active project>'
# only needed since this session isn't interactive
proj_activate(path)
#> โ Setting active project to '/private/tmp/RtmpPqIkgo/mypkg'
#> โ Changing working directory to '/tmp/RtmpPqIkgo/mypkg/'
# Modify the description ----------------------------------------------
use_mit_license("My Name")
#> โ Adding 'MIT + file LICENSE' to License
#> โ Writing 'LICENSE'
#> โ Writing 'LICENSE.md'
#> โ Adding '^LICENSE\\.md$' to '.Rbuildignore'
use_package("ggplot2", "Suggests")
#> โ Adding 'ggplot2' to Suggests field in DESCRIPTION
#> โข Use `requireNamespace("ggplot2", quietly = TRUE)` to test if package is installed
#> โข Then directly refer to functions with `ggplot2::fun()`
# Set up other files -------------------------------------------------
use_readme_md()
#> โ Writing 'README.md'
#> โข Update 'README.md' to include installation instructions.
use_news_md()
#> โ Writing 'NEWS.md'
use_test("my-test")
#> โ Adding 'testthat' to Suggests field in DESCRIPTION
#> โ Adding '3' to Config/testthat/edition
#> โ Creating 'tests/testthat/'
#> โ Writing 'tests/testthat.R'
#> โ Writing 'tests/testthat/test-my-test.R'
#> โข Edit 'tests/testthat/test-my-test.R'
x <- 1
y <- 2
use_data(x, y)
#> โ Adding 'R' to Depends field in DESCRIPTION
#> โ Creating 'data/'
#> โ Setting LazyData to 'true' in 'DESCRIPTION'
#> โ Saving 'x', 'y' to 'data/x.rda', 'data/y.rda'
#> โข Document your data (see 'https://r-pkgs.org/data.html')
# Use git ------------------------------------------------------------
use_git()
#> โ Initialising Git repo
#> โ Adding '.Rproj.user', '.Rhistory', '.Rdata', '.httr-oauth', '.DS_Store', '.quarto' to '.gitignore'
Code of Conduct
Please note that the usethis project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.