Create custom R metapackages from local packages.
bigbang builds tidyverse-style metapackages from local package archives.
Every metapackage ends in -verse—tidyverse, teamverse, yours. This package
creates them: one function call, and a new -verse exists.
- 📦 One call, one -verse —
create_metapackage()scaffolds a complete, documented, CRAN-checkable metapackage from a directory of.tar.gz/.ziparchives. - 🧭 Real dependency resolution — builds the local dependency graph, orders installation topologically, and refuses cycles up front.
- 🔌 Offline first — designed for teams behind institutional firewalls;
cran_deps = "skip"never touches the network. - 🌐 Bilingual at runtime — English and Spanish messages through R's native gettext support.
- 🛡️ Safe by design — startup hooks never install packages or remove files, and a read-only scanner audits artifacts generated by old versions.
The generated package has two separate jobs:
library(<meta>)attaches components that are already installed and reports missing ones.<meta>_install()explicitly installs local archives once, in topological dependency order, and then attaches them.
Once on CRAN, the stable version will install with:
install.packages("bigbang")The development version is on GitHub:
# install.packages("pak")
pak::pak("sebollin/bigbang")
# or
remotes::install_github("sebollin/bigbang")And true to the package's offline spirit, a local source checkout installs without any network at all:
install.packages("path/to/bigbang", repos = NULL, type = "source")Suppose archives/ contains:
archives/
├── datahelpers_1.2.0.tar.gz
└── reports_0.9.1.tar.gz
Create the metapackage in a new directory:
library(bigbang)
result <- create_metapackage(
name = "teamverse",
packages = c("datahelpers_1.2.0", "reports_0.9.1"),
pkg_dir = "archives",
dest_dir = tempdir(),
document = TRUE
)
resultBuild and install teamverse by the usual R package workflow. Component
installation remains explicit:
library(teamverse) # attaches what is already installed
teamverse_install(cran_deps = "skip")cran_deps = "skip" is the default and never accesses the network. Use
"error" to fail immediately when a non-local dependency is missing, or
"install" with an explicitly configured repos value to allow repository
installation.
See vignette("getting-started", package = "bigbang") for a reproducible
toy project created entirely under tempdir().
create_metapackage()creates a complete metapackage source tree.install_local_pkg()installs one local archive and its dependencies.diagnose_dependencies()reports possible implicit dependencies.scan_bigbang_artifact()scans old source trees, archives, or installed packages for historical deletion signatures without loading them.
The former Spanish function names remain as deprecated transition aliases.
ZIP archives are classified by content. A ZIP containing Meta/package.rds is
a Windows binary and is installed with type = "win.binary" on Windows only.
Other ZIPs containing DESCRIPTION are unpacked into an owned temporary
directory and installed as source packages.
All generated text is written explicitly as UTF-8. CI is prepared for R release
on Windows and macOS and for release, devel, and oldrel on Ubuntu. The declared
minimum is R 3.6.0, following the minimum of the imported brio release.
English is the source language for code, help, and runtime messages. A complete Spanish runtime catalog is included through R's gettext mechanism:
Sys.setLanguage("es") # R >= 4.2On earlier R versions, set LANGUAGE=es before starting R. A complete Spanish
guide is available in vignette("bigbang-es", package = "bigbang") and
as README.es.md. Rd help remains English because R has no stable
native mechanism for translated help; a separate bigbang.es module can be
considered if rhelpi18n becomes production-ready and reaches CRAN.
| Need | Best fit |
|---|---|
| One metapackage over a fixed set of local archives, with explicit offline installation | bigbang |
| A conventional local repository with indexes, multiple packages, and repository semantics | miniCRAN or drat |
| A small metapackage around packages already available from repositories | pkgverse |
bigbang deliberately does not replace a repository manager. If a team needs
version retention, repository indexes, or dependency distribution to many
projects, miniCRAN/drat is the stronger abstraction. bigbang is useful
when the distributed unit is a curated metapackage plus a directory of archives.
An unreleased predecessor generated cleanup code that could remove directories named after components from the user's working directory. The startup installer and all cwd-relative cleanup paths were removed before this CRAN submission and are covered by destructive regression tests that run only in disposable trees.
Do not load or document an old generated artifact before classifying it:
scan <- scan_bigbang_artifact("path/to/artifact", dry_run = TRUE)
scanIf scan$vulnerable is true, quarantine the artifact and generate a new version
in a new, empty destination. Never regenerate an unclassified source tree in
place. The full remediation procedure is documented in the Spanish guide and in
RELEASE.md.
bigbang started from a suggestion by Richard Detomasi, who proposed building a metapackage tool and pointed to pegeler/metapackage as an antecedent. The design and implementation—including the graph-based dependency resolution—are by Sebastián Lucas. The hex logo was created with hexSticker.
Contributions are welcome: bug reports and feature ideas through issues, and pull requests following CONTRIBUTING.md (spelling, lint, and test expectations are documented there). The package aims to stay small and focused — see Choosing the right tool above for what deliberately stays out of scope.
citation("bigbang")@Manual{bigbang2026,
title = {bigbang: Build 'Tidyverse'-Style Meta-Packages from Local Package Files},
author = {Sebastian Lucas},
note = {R package version 0.1.0},
year = {2026},
url = {https://github.com/sebollin/bigbang},
}The complete test suite includes unit, portability, i18n, scanner, installation,
and data-loss regression tests. R CMD check --as-cran runs with the PDF manual
enabled for both bigbang and a generated metapackage, on every push, across
Ubuntu (release, devel, oldrel), Windows, and macOS. win-builder and
rhub::rhub_check() results are reviewed before each CRAN submission.
