GitHub - ankane/jetpack: A friendly package manager for R (original) (raw)
Jetpack
🔥 A friendly package manager for R
- Lightweight - adds just three files to your project
- Designed for reproducibility - thanks to renv, no more global installs!
- Works from both R and the command line
Inspired by Yarn, Bundler, and Pipenv
Installation
Install Jetpack
install.packages("jetpack")
How It Works
Jetpack uses the DESCRIPTION
file to store your project dependencies. It stores the specific version of each package in renv.lock
. This makes it possible to have a reproducible environment. You can edit dependencies in the DESCRIPTION
file directly, but Jetpack provides functions to help with this.
Getting Started
Open a project and run:
Commands
Install
Install packages for a project
This ensures all the right versions are installed locally. As dependencies change, collaborators should run this command to stay synced.
Be sure to prefix commands with
jetpack::
. Jetpack isn’t installed in your virtual environment, solibrary(jetpack)
won’t work.
Add
Add a package
jetpack::add("randomForest")
Add multiple packages
jetpack::add(c("randomForest", "DBI"))
Add a specific version
jetpack::add("DBI@1.0.0")
Add from GitHub or another remote source
jetpack::add("plyr", remote="hadley/plyr")
Supports these remotes
Add from a specific tag, branch, or commit
jetpack::add("plyr", remote="hadley/plyr@v1.8.4")
Add from a local source
jetpack::add("plyr", remote="local::/path/to/plyr")
The local directory must have the same name as the package
Update
Update a package
jetpack::update("randomForest")
For local packages, run this anytime the package code is changed
Update multiple packages
jetpack::update(c("randomForest", "DBI"))
Update all packages
Remove
Remove a package
jetpack::remove("randomForest")
Remove multiple packages
jetpack::remove(c("randomForest", "DBI"))
Remove remotes as well
jetpack::remove("plyr", remote="hadley/plyr")
Check
Check that all dependencies are installed
Outdated
Show outdated packages
Source Control
Be sure to commit the files Jetpack generates to source control.
Bioconductor
For Bioconductor, add the BiocManager package first:
jetpack::add("BiocManager")
Then add other packages:
jetpack::add("Biobase", remote="bioc::release/Biobase")
Deployment
Server
Install Jetpack on the server and run:
jetpack::install(deployment=TRUE)
Docker
Create init.R
with:
install.packages("jetpack") jetpack::install(deployment=TRUE)
And add it into your Dockerfile
:
FROM r-base
RUN apt-get update && apt-get install -qq -y --no-install-recommends
libxml2-dev libssl-dev libcurl4-openssl-dev libssh2-1-dev
RUN mkdir -p /app WORKDIR /app
COPY init.R DESCRIPTION renv.lock ./ RUN Rscript init.R
COPY . .
CMD Rscript app.R
Heroku
For the R buildpack, create init.R
with:
install.packages("jetpack") jetpack::install(deployment=TRUE)
Alternatively, you can use Docker Deploys on Heroku.
Command Line
Jetpack can also be run from the command line. To install the CLI, run:
On Windows, add
C:\ProgramData\jetpack\bin
to your PATH. See instructions for how to do this.
All the Jetpack commands are now available
jetpack init jetpack install jetpack add randomForest jetpack add DBI@1.0.0 jetpack add plyr --remote=hadley/plyr jetpack update randomForest jetpack remove DBI jetpack check jetpack outdated
You can also use it to manage global packages
jetpack global add randomForest jetpack global update DBI jetpack global update jetpack global remove plyr jetpack global list jetpack global outdated
You can even use it to update itself
jetpack global update jetpack
For the full list of commands, use:
Upgrading
To upgrade, rerun the installation instructions.
History
View the changelog
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development and testing:
git clone https://github.com/ankane/jetpack.git cd jetpack
In R, do:
install.packages("devtools") devtools::install_deps(dependencies=TRUE) devtools::test()
To test a single file, use:
devtools::install() # to use latest updates devtools::test_active_file("tests/testthat/test-jetpack.R")