Learn R Programming

usethis

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/RtmpPZsquk/mypkg/'.
#> ✔ Setting active project to "/private/tmp/RtmpPZsquk/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 <first.last@example.com> [aut, cre]
#> 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.3.2
#> ✔ 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/RtmpPZsquk/mypkg".
#> ✔ Changing working directory to '/tmp/RtmpPZsquk/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("rmarkdown", "Suggests")
#> ✔ Adding rmarkdown to 'Suggests' field in DESCRIPTION.
#> ☐ Use `requireNamespace("rmarkdown", quietly = TRUE)` to test if rmarkdown is
#>   installed.
#> ☐ Then directly refer to functions with `rmarkdown::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" and "y" to "data/x.rda" and "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", and
#>   ".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.

Copy Link

Version

Install

install.packages('usethis')

Monthly Downloads

198,334

Version

3.1.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

November 26th, 2024

Functions in usethis (3.1.0)

github-token

Get help with GitHub personal access tokens
rprofile-helper

Helpers to make useful changes to .Rprofile
licenses

License a package
git_vaccinate

Vaccinate your global gitignore file
pull-requests

Helpers for GitHub pull requests
proj_sitrep

Report working directory and usethis/RStudio project
issue-this

Helpers for GitHub issues
proj_utils

Utility functions for the active project
use_citation

Create a CITATION template
use_code_of_conduct

Add a code of conduct
use_author

Add an author to the Authors@R field in DESCRIPTION
use_addin

Add minimal RStudio Addin binding
ui-questions

User interface - Questions
use_tidy_github_actions

Helpers for tidyverse development
ui_silence

Suppress usethis's messaging
ui-legacy-functions

Legacy functions related to user interface
use_description

Create or modify a DESCRIPTION file
use_directory

Use a directory
use_blank_slate

Don't save/load user workspace between sessions
use_git

Initialise a git repository
use_git_config

Configure Git
use_build_ignore

Add files to .Rbuildignore
use_cran_comments

CRAN submission comments
use_cpp11

Use C++ via the cpp11 package
use_github_file

Copy a file from any GitHub repo into the current project
use_git_ignore

Tell Git to ignore files
use_git_hook

Add a git hook
use_coverage

Test coverage
use_course_details

Helpers to download and unpack a ZIP file
use_github

Connect a local repo with GitHub
use_git_remote

Configure and report Git remotes
use_github_actions_badge

Generates a GitHub Actions badge
use_github_action

Set up a GitHub Actions workflow
use_github_release

Publish a GitHub release
use_github_pages

Configure a GitHub Pages site
use_github_actions

Deprecated GitHub Actions functions
use_github_labels

Manage GitHub issue labels
use_data

Create package data
use_github_links

Use GitHub links in URL and BugReports
use_data_table

Prepare for importing data.table
use_jenkins

Create Jenkinsfile for Jenkins CI Pipelines
use_latest_dependencies

Use "latest" versions of all dependencies
use_namespace

Use a basic NAMESPACE
use_lifecycle

Use lifecycle badges
use_make

Create Makefile
use_pkgdown

Use pkgdown
use_rcpp

Use C, C++, RcppArmadillo, or RcppEigen
use_gitlab_ci

Continuous integration setup and badges
use_readme_rmd

Create README files
use_import_from

Import a function from another package
use_release_issue

Create a release checklist in a GitHub issue
use_testthat

Sets up overall testing infrastructure
use_revdep

Reverse dependency checks
use_test_helper

Create or edit a test helper file
use_news_md

Create a simple NEWS.md
use_package

Depend on another package
use_template

Use a usethis-style template
use_standalone

Use a standalone file from another repo
use_r

Create or edit R or test files
use_rmarkdown_template

Add an RMarkdown Template
use_roxygen_md

Use roxygen2 with markdown
use_upkeep_issue

Create an upkeep checklist in a GitHub issue
use_version

Increment package version
use_vignette

Create a vignette or article
usethis-package

usethis: Automate Package and Project Setup
use_package_doc

Package-level documentation
use_pipe

Use magrittr's pipe in your package
use_spell_check

Use spell check
use_logo

Use a package logo
usethis_options

Options consulted by usethis
use_rstudio_preferences

Set global RStudio preferences
use_rscloud_badge

Deprecated badge function
zip-utils

Download and unpack a ZIP file
use_rstudio

Add RStudio Project infrastructure
write-this

Write into or over a file
use_tutorial

Create a learnr tutorial
use_tidy_thanks

Identify contributors via GitHub activity
use_tibble

Prepare to return a tibble
use_tidy_eval

Deprecated tidyverse functions
git_sitrep

Git/GitHub sitrep
edit_file

Open file for editing
badges

README badges
create_from_github

Create a project from a GitHub repo
create_package

Create a package or project
git_protocol

See or set the default Git protocol
browse-this

Visit important project-related web pages
git-default-branch

Get or set the default Git branch
edit

Open configuration files
proj_activate

Activate a project
rename_files

Automatically rename paired R/ and test/ files
git_branch_default

Deprecated Git functions