> ## Documentation Index
> Fetch the complete documentation index at: https://cloud.laravel.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Using Yarn, PNPM, or Bun

> Learn how to use PNPM, Yarn, or Bun with Laravel Cloud and compare package managers.

Laravel Cloud installs and runs `npm` by default during deployments. However, if you prefer to use an alternative JavaScript package manager like **Yarn**, **Bun**, or **PNPM**, you can do so by customizing your build commands.

These tools are not officially supported by Laravel Cloud, but you can install them manually within your build steps.

<Note>
  If you plan to use a different JavaScript package manager via the examples below, be sure to remove or comment out the default `npm` commands in your build commands before adding the custom commands.
</Note>

#### Example: Using Bun

If you would like to use Bun instead of npm, you can override the default build command in your site’s settings with the following:

```bash theme={null}
npm install -g bun
bun install
bun run build
```

#### Example: Using Yarn

To use Yarn instead of npm:

```bash theme={null}
npm install -g yarn
yarn install
yarn run build
```

#### Example: Using PNPM

To use PNPM instead of npm:

```bash theme={null}
npm install -g pnpm
pnpm install
pnpm run build
```

#### Approving PNPM build scripts

PNPM blocks `postinstall` and other build scripts for dependencies it doesn't recognize, so packages with native binaries (for example, `esbuild` or `sharp`) may silently fail to build. Watch for an "Ignored build scripts" warning in your build log.

Since Laravel Cloud's build step is non-interactive, approve these scripts locally first, then commit the resulting configuration so the approval is already in place when Cloud builds your application:

```bash theme={null}
pnpm approve-builds
```

On PNPM 11 and later, this writes an `allowBuilds` map to `pnpm-workspace.yaml`. On PNPM 9 and 10, it writes an `onlyBuiltDependencies` array to the `pnpm` key in `package.json` instead. Either file should be committed to your repository.

<Note>
  A `.npmrc` with `auto-install-peers` or `node-linker=hoisted` does not approve build scripts and won't fix this; use `pnpm approve-builds` instead.
</Note>
