pub struct Bun;Expand description
Bun package manager adapter.
Trait Implementations§
Source§impl PackageManager for Bun
impl PackageManager for Bun
Source§fn detect(&self, project_dir: &Path) -> bool
fn detect(&self, project_dir: &Path) -> bool
Detects if the project uses bun by checking for bun.lockb or bun.lock.
Source§fn bloat_dirs(&self, project_dir: &Path) -> Vec<BloatDir>
fn bloat_dirs(&self, project_dir: &Path) -> Vec<BloatDir>
Returns the bloat directories for bun (node_modules).
bun hardlinks packages out of ~/.bun/install/cache on Linux and Windows, so
deleting node_modules does not free those bytes — the cache keeps them. On
macOS bun uses clonefile instead, which leaves the link count at 1 and is
invisible to this measurement; APFS clones genuinely are freed block-by-block
as the cache copy diverges, so counting them as freed is the honest reading.
Source§fn enforce_lockfile(
&self,
project_dir: &Path,
policy: EnforcePolicy,
) -> Result<()>
fn enforce_lockfile( &self, project_dir: &Path, policy: EnforcePolicy, ) -> Result<()>
Verifies the lockfile resolves cleanly, without installing anything.
--dry-run is essential, not cosmetic. A plain bun install --frozen-lockfile
is a real install: it downloads every dependency and runs their lifecycle
scripts — third-party code executed as a precondition for deleting the very
tree it just built. With --dry-run, bun still resolves package.json against
the lockfile and fails when they disagree, but writes nothing.
bun is the one manager whose natural check was already read-only, so there is no
writing form to opt into and allow_rewrite changes nothing here.
Source§fn restore(&self, project_dir: &Path, timeout: Duration) -> Result<()>
fn restore(&self, project_dir: &Path, timeout: Duration) -> Result<()>
Restores the dependencies using the lockfile.
Source§fn lockfiles(&self) -> &'static [&'static str]
fn lockfiles(&self) -> &'static [&'static str]
Source§fn restore_named(
&self,
project_path: &Path,
dir_name: &str,
runtime: Option<&str>,
timeout: Duration,
) -> Result<()>
fn restore_named( &self, project_path: &Path, dir_name: &str, runtime: Option<&str>, timeout: Duration, ) -> Result<()>
PackageManager::restore, told the name the pruned directory had. Read moreSource§fn runtime_tag(&self, project_path: &Path, dir_name: &str) -> Option<String>
fn runtime_tag(&self, project_path: &Path, dir_name: &str) -> Option<String>
Auto Trait Implementations§
impl Freeze for Bun
impl RefUnwindSafe for Bun
impl Send for Bun
impl Sync for Bun
impl Unpin for Bun
impl UnsafeUnpin for Bun
impl UnwindSafe for Bun
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more