Skip to content

Comparison with pnpm deploy

PNPM has a built-in pnpm deploy command that solves a similar problem: extracting a workspace package for deployment. This page explains how they differ and when to use which.

How they work

pnpm deploy

pnpm deploy copies a workspace package to a target directory and runs a full install there, producing a ready-to-run output with a populated node_modules. Internal workspace dependencies are bundled into the output automatically.

It is tightly coupled to PNPM and only works in PNPM workspaces.

isolate-package

isolate-package produces a self-contained source directory containing the target package, its internal dependencies as file: references, and a pruned lockfile. No install is performed — the deployment target is expected to run its own install step.

It works with NPM, PNPM, Yarn (classic and modern), and has partial Bun support.

Key differences

pnpm deployisolate-package
Package managersPNPM onlyNPM, PNPM, Yarn, Bun
OutputInstalled node_modulesManifests + pruned lockfile
Install stepPerformed during deployPerformed by deployment target
Firebase compatibleNoYes
Lockfile includedNoYes

Firebase compatibility

Firebase-tools deployment expects a source directory with a package.json and a lockfile. It runs its own npm install (or equivalent) as part of the deployment process. pnpm deploy cannot produce this kind of output because it delivers a pre-installed node_modules instead of the manifest-and-lockfile combination that Firebase expects.

The firebase-tools-with-isolate fork integrates isolate-package directly into the deployment pipeline, so the isolation step runs transparently as part of firebase deploy.

When to use which

Use pnpm deploy when you are in a PNPM monorepo and your deployment target expects a ready-to-run directory with node_modules already in place, for example Docker or container-based workflows.

Use isolate-package when your deployment target performs its own install step (Firebase, most serverless platforms), when you need a pruned lockfile for deterministic installs, or when your monorepo uses a package manager other than PNPM.

Released under the MIT License.