The goal of usethis is to automate many common package and analysis setup tasks.
Install the released version of usethis from CRAN:
install.packages("usethis")
Or install the development version from GitHub with:
# install.packages("devtools")
devtools::install_github("r-lib/usethis")
Most use_*()
functions operate on the active project. If youβve just
used usethis to create a new package or project, that will be the
current project. Otherwise usethis tries to confirm that current working
directory can be recognized as a project. Use proj_get()
and
proj_set()
for manual intervention. Some 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.
Note: usethis is gaining more and more functionality for analytical project that are not packages. Stay tuned.
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.9000'
#> β 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 'checks', 'library', 'checks.noindex', 'library.noindex', 'data.sqlite', '*.html' to 'revdep/.gitignore'
#> β Writing 'revdep/email.yml'
#> β Run checks with `revdepcheck::revdep_check(num_workers = 4)`
# Set up other files -------------------------------------------------
use_readme_md()
#> β Writing '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 '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
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.