Learn R Programming

⚠️There's a newer version (3.2.0) of this package.Take me there.

usethis

The goal of usethis is to automate many common package and analysis setup tasks.

Installation

You can install usethis from github with:

# install.packages("devtools")
devtools::install_github("r-lib/usethis")

Usage

All use_* functions operate on the current directory unless you specify the base_path argument. indicates that usethis has setup everything for you. indicates that you'll need to do some work yourself.

library(usethis)

# Create a new package -------------------------------------------------
tmp <- file.path(tempdir(), "mypkg")
create_package(tmp)
#> Changing active project to mypkg
#> ✔ Creating 'R/'
#> ✔ Creating 'man/'
#> ✔ Writing 'DESCRIPTION'
#> ✔ Writing 'NAMESPACE'

# Modify the description ----------------------------------------------
use_mit_license("My Name")
#> ✔ Setting License field in DESCRIPTION to 'MIT + file LICENSE'
#> ✔ Writing 'LICENSE.md'
#> ✔ Adding '^LICENSE\\.md$' to '.Rbuildignore'
#> ✔ Writing 'LICENSE'

use_package("MASS", "Suggests")
#> ✔ Adding 'MASS' to Suggests field in DESCRIPTION
#> ● Use `requireNamespace("MASS", quietly = TRUE)` to test if package is installed
#> ● Then use `MASS::fun()` to refer to functions.

use_dev_package("callr")
#> ✔ Adding 'callr' to Imports field in DESCRIPTION
#> ● Refer to functions with `callr::fun()`
#> ✔ Adding 'r-lib/callr' to DESCRIPTION Remotes

# Set up various packages ---------------------------------------------
use_roxygen_md()
#> ✔ Setting Roxygen field in DESCRIPTION to 'list(markdown = TRUE)'
#> ✔ Setting RoxygenNote field in DESCRIPTION to '6.0.1'
#> ● Re-document

use_rcpp()
#> ✔ Adding 'Rcpp' to LinkingTo field in DESCRIPTION
#> ✔ Adding 'Rcpp' to Imports field in DESCRIPTION
#> ✔ Creating 'src/'
#> ✔ Adding '*.o', '*.so', '*.dll' to 'src/.gitignore'
#> ● Include the following roxygen tags somewhere in your package
#>   #' @useDynLib mypkg, .registration = TRUE
#>   #' @importFrom Rcpp sourceCpp
#>   NULL
#> ● Run document()

use_revdep()
#> ✔ Creating 'revdep/'
#> ✔ Adding '^revdep$' to '.Rbuildignore'
#> ✔ Adding 'revdep/checks' to './.gitignore'
#> ✔ Adding 'revdep/library' to './.gitignore'
#> ✔ Writing 'revdep/email.yml'
#> ● Run checks with `revdepcheck::revdep_check(num_workers = 4)`

# Set up other files -------------------------------------------------
use_readme_md()
#> ✔ Writing 'README.md'
#> ● Edit 'README.md'

use_news_md()
#> ✔ Writing 'NEWS.md'
#> ● Edit 'NEWS.md'

use_test("my-test")
#> ✔ Adding 'testthat' to Suggests field in DESCRIPTION
#> ✔ 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)
#> ✔ Creating 'data/'
#> ✔ Saving x to data/x.rda
#> ✔ Saving y to data/y.rda

# Use git ------------------------------------------------------------
use_git()
#> ✔ Initialising Git repo
#> ✔ Adding '.Rhistory', '.RData', '.Rproj.user' to './.gitignore'
#> ✔ Adding files and committing

Copy Link

Version

Install

install.packages('usethis')

Monthly Downloads

256,742

Version

0.0.0.9000

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Hadley Wickham

Last Published

August 28th, 2025

Functions in usethis (0.0.0.9000)

use_description

Create a default DESCRIPTION file for a package.
use_dev_version

Increment development version
use_code_of_conduct

Add a code of conduct
use_cran_badge

Create a CRAN badge
licenses

Use MIT, GPL-3, or Apache 2.0 license for your package
use_build_ignore

Add files to .Rbuildignore
use_cran_comments

Create a comment for submission to CRAN.
use_data

Create package data
use_git

Initialise a git repository.
use_git_ignore

Tell git to ignore files
use_github

Connect a local repo with GitHub.
use_namespace

Use a basic NAMESPACE
use_git_hook

Add a git hook.
use_news_md

Create a simple NEWS.md
use_template

Use a usethis template
use_testthat

Create tests
use_rcpp

Use Rcpp
ci

Continuous integration
create_package

Create a new package or project
use_package

Use specified package.
use_package_doc

Create package documentation template
use_vignette

Create a vignette
use_readme_rmd

Create README files.
use_revdep

Set up devtools revdep template
use_rstudio

Use RStudio
use_github_labels

Create standard github labels for labelling issues.
use_badge

Use a README badge
use_pipe

Use magrittr's pipe in your package
tidyverse

Helpers for the tidyverse
use_directory

Use a directory.
edit

Open useful configuration files
use_roxygen_md

Use roxygen with markdown
use_rmarkdown_template

Add an RMarkdown Template
use_depsy_badge

Create a Depsy badge
use_usethis

Make usethis available interactively
proj_get

Get and set currently active project