# npm ci needs an existing package-lock.json

> Getting the error “npm ci needs an existing package-lock.json”? Here is how to fix it. Commit a lockfile, or install with the one you already have.

**npm ci needs an existing package-lock.json.** npm ci only installs from a package-lock.json. Projects made in Lovable or Bolt often have a bun.lockb, or no lockfile at all.

- Web build. No package-lock.json for npm ci.
- Interactive page: https://capwr.app/free-tools/build-error-explainer/npm-ci-package-lock-json
- Build error explainer: https://capwr.app/free-tools/build-error-explainer
- Last updated: 2026-10-03

## What this error means

npm ci only installs from a package-lock.json. Projects made in Lovable or Bolt often have a bun.lockb, or no lockfile at all.

## Why it happens

npm ci will not resolve versions itself. It only installs when package-lock.json or npm-shrinkwrap.json is already in the repo.

## The message tools print

```
npm ERR! The `npm ci` command can only install with an existing package-lock.json or
npm ERR! npm-shrinkwrap.json with lockfileVersion >= 1.
```

## How to fix it

1. Run npm install locally and commit the package-lock.json it creates.
2. Or switch the build to the package manager your lockfile belongs to (bun install, pnpm install).

## Check a log that shows this

Paste the failing step into the [build error explainer](https://capwr.app/free-tools/build-error-explainer). It matches this message, and any others in the same log, in your browser. Nothing is uploaded.

## Other Web build errors

- [npm ci: lockfile is out of sync with package.json](https://capwr.app/free-tools/build-error-explainer/npm-ci-lockfile-out-of-sync)
- [npm ERESOLVE unable to resolve dependency tree](https://capwr.app/free-tools/build-error-explainer/npm-eresolve)
- [JavaScript heap out of memory](https://capwr.app/free-tools/build-error-explainer/javascript-heap-out-of-memory)
- [Rollup failed to resolve import](https://capwr.app/free-tools/build-error-explainer/rollup-failed-to-resolve-import)
- [error TS: TypeScript errors stop the build](https://capwr.app/free-tools/build-error-explainer/typescript-error-ts)
- [Could not find the web assets directory](https://capwr.app/free-tools/build-error-explainer/could-not-find-the-web-assets-directory)
- [Capacitor: Invalid App ID](https://capwr.app/free-tools/build-error-explainer/invalid-app-id)

## Build the web app before the native one

CapWrapp installs dependencies from the lockfile, builds the site, and runs Capacitor sync before the native build, from the GitHub repo you connect.

[Get started free](https://capwr.app/login).

## About CapWrapp

CapWrapp turns a web app on GitHub — built with Lovable, Bolt, Base44, Cursor or by hand — into iPhone and Android apps. It adds Capacitor if the repo needs it, signs the builds, and ships them to TestFlight and Google Play from GitHub Actions, with no Mac or Xcode on your side. [Get started free](https://capwr.app/login) · [Lovable to App Store guide](https://capwr.app/guides/lovable-to-app-store)
