Discover packages used within the current project, and then initialize a project-local private R library with those packages. The currently-installed versions of any packages in use (as detected within the default R libraries) are then installed to the project's private library.
init(project = NULL, settings = NULL, force = FALSE)
The project directory.
A list of settings to be used with the newly-initialized project.
Boolean; force initialization? By default, renv
will refuse
to initialize the home directory as a project, to defend against accidental
misusages of init()
.
renv
will write or amend the following files in the project:
.Rprofile
: An auto-loader will be installed, so that new R sessions
launched within the project are automatically loaded.
renv/activate.R
: This script is run by the previously-mentioned
.Rprofile
to load the project.
renv/.gitignore
: This is used to instruct Git to ignore the project's
private library, as it does not need to be
.Rbuildignore
: to ensure that the renv
directory is ignored during
package development; e.g. when attempting to build or install a package
using renv
.
The primary steps taken when initializing a new project are:
R package dependencies are discovered within the R files used within
the project with dependencies()
;
Discovered packages are copied into the renv
global package cache, so
these packages can be re-used across future projects as necessary;
Any missing R package dependencies discovered are then installed into the project's private library;
A lockfile capturing the state of the project's library is created
with snapshot()
;
The project is activated with activate()
.
This mimics the workflow provided by packrat::init()
, but with more
reasonable default behaviors -- in particular, renv
does not attempt
to download and store package sources, and renv
will re-use packages
that have already been installed whenever possible.
If renv
sees that the associated project has already been initialized and
has a lockfile, then it will attempt to infer the appropriate action to take
based on the presence of a private library. If no library is available,
renv
will restore the private library from the lockfile; if one is
available, renv
will ask if you want to perform a 'standard' init,
restore from the lockfile, or activate the project without taking any
further action.