--- title: "Lockfile" description: "Bun's lockfile format and configuration" --- `bun install` creates a lockfile called `bun.lock`. #### Should it be committed to git? Yes #### Generate a lockfile without installing? To generate a lockfile without installing to `node_modules`, use the `--lockfile-only` flag. Bun always saves the lockfile to disk, even if it is already up to date with your project's `package.json`(s). The exception is when `--frozen-lockfile` (or `--production`) is set. ```bash terminal icon="terminal" bun install --lockfile-only ``` `bun add`, `bun remove`, and `bun update` also accept `--lockfile-only`. `--lockfile-only` still populates the global install cache with registry metadata and git/tarball dependencies. #### Can I opt out? To install without creating a lockfile: ```bash terminal icon="terminal" bun install --no-save ``` To write a Yarn lockfile _in addition_ to `bun.lock`: ```bash terminal icon="terminal" bun install --yarn ``` ```toml bunfig.toml icon="settings" [install.lockfile] # whether to save a non-Bun lockfile alongside bun.lock # only "yarn" is supported print = "yarn" ``` #### Text-based lockfile Bun v1.2 changed the default lockfile format to the text-based `bun.lock`. To migrate an existing binary `bun.lockb`, run `bun install --save-text-lockfile --frozen-lockfile --lockfile-only` and delete `bun.lockb`. For more on the format, see [the blog post](https://bun.com/blog/bun-lock-text-lockfile). #### Automatic lockfile migration When you run `bun install` in a project without a `bun.lock`, Bun automatically migrates existing lockfiles: - `yarn.lock` (v1) - `package-lock.json` (npm, `lockfileVersion` 2, 3 or 4) - `pnpm-lock.yaml` (pnpm) Bun does not migrate a `package-lock.json` from npm 6 or older (`lockfileVersion` 1); it prints a warning and resolves from `package.json` instead. Bun preserves the original lockfile. You can remove it manually after verification.