
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.
create_metapackage() scaffolds a complete, documented,
CRAN-checkable metapackage from a directory of
.tar.gz/.zip archives.cran_deps = "skip" never touches
the network.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.