mrkeyoor.com_
Wed 09 Sept 13:30 UTC
Dev Toolsevaluationupdated 09 Sept 2026

lerna review

Lerna is a command-line tool for running tasks, versioning packages, and publishing many JavaScript or TypeScript packages kept in one repository. It solves the coordination work around package order, changed-project selection, release versions, and npm publishing while leaving dependency installation to npm, Yarn, pnpm, or Bun.

trackingstars / 7d
Verdict

Our Lerna run installed 1,847 packages and occupied 685 MB, then built successfully and passed all 28 tests, so it is dependable to verify but expensive to carry. Use it when a JavaScript monorepo needs package-aware task runs and npm releases in one familiar CLI. Skip it if Node 22 is unavailable, Nx is unwelcome, or a smaller release-only tool covers the job.

We ran it

Lab card: what happened when we ran lernaScreenshot of lerna (lerna.js.org)
Install✓ · 48s1847 packages · 685 MB
Build✓ · 34s
Tests✓ · 112s28 passed · 0 failed of 28 (vitest)
Known vulns420 critical · 20 high · 20 moderate · 2 low (npm audit)
Repo1528 files~64,578 lines of source · 7.7 MB · 5 CI workflows

Answers from our run

Does lerna build from source?

Dependencies installed in 48 seconds (1847 packages), and the build succeeded in 34 seconds. We cloned commit 0be4313 into a clean Debian container with 3 CPUs and no project-specific setup.

Do lerna's tests pass?

Yes: 28 of 28 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Does lerna have known vulnerabilities in its dependencies?

npm audit flagged 42 known advisories in the dependency tree at the time of our run.

Who should not use lerna?

Projects staying on Node 18 or 20: Lerna 10.0.1 declares Node 22.13, 24, or 26 support.

What are the alternatives to lerna?

Nx, Changesets, Turborepo. Our Lerna run installed 1,847 packages and occupied 685 MB, then built successfully and passed all 28 tests, so it is dependable to verify but expensive to carry.

Setup4/5Clean 48-second install, but 1,847 packages use 685 MB
Docs4/5Detailed task and release guides; repository README is sparse
Community5/536,054 stars with pushes and issue work in September 2026
Maturity4/5Version 10 and passing tests, offset by 42 audit findings

Who it’s for

JavaScript or TypeScript teams with several packages in one workspace.
Maintainers who want one command to version and publish related npm packages.
Repositories that need affected-package task runs and local caching through Nx.
Teams already using npm, Yarn, pnpm, or Bun workspaces and Git-based releases.

Who it’s NOT for

Projects staying on Node 18 or 20: Lerna 10.0.1 declares Node 22.13, 24, or 26 support.
Teams looking for a tool to install and link workspace dependencies: the getting-started guide assigns that job to the package manager.
Publishers that cannot use npm registry configuration: Lerna's publish guide says it always uses npm, even when another client manages the workspace.
Organizations that do not want Nx in the task path: modern lerna run, caching, and distributed execution are powered by Nx.
Maintainers who publish with npm security keys and need released support today: issue 3273 remains open, with the proposed browser-auth change still in pull request 4417.

Setup reality

Our sandbox installed 1,847 npm packages in 48 seconds and used 685 MB. The build succeeded in 34 seconds, then all 28 Vitest tests passed in 112 seconds. Npm audit reported 42 known vulnerabilities: 20 high, 20 moderate, 2 low, and none critical.

Trying task execution needs a workspace plus scripts in its packages. Versioning expects Git history and tags. Publishing also needs an npm account, registry authentication, and suitable .npmrc settings. Nx Cloud is only needed for the documented distributed task path.

Lerna 10.0.1 supports Node 22.13, 24, or 26, so older Node installations must move first. Lerna does not install or link workspace dependencies. The measured checkout was a 1,528-file npm monorepo with no Dockerfile, so the normal setup is a local Node toolchain or CI runner rather than a supplied container.

Lerna leaves dependency installation to the package manager

At commit 0be4313, Lerna gives a JavaScript or TypeScript monorepo one CLI for running package scripts, finding changed projects, assigning versions, creating Git tags, and publishing to npm. It supports fixed versioning, where packages share a release line, and independent versioning, where each changed package can receive its own bump. Filters such as --scope, --since, and --include-dependencies make the commands useful in local development and CI.

That scope has a firm edge. The getting-started guide says Lerna does not install or link dependencies; npm, Yarn, pnpm, or Bun workspaces do that work. The measured checkout reflects the split: it is an npm workspace monorepo with 1,528 files and about 64,578 lines of source. Adopting Lerna means keeping the package manager as the dependency authority, then using Lerna above it for tasks and releases.

Version 10 requires Node 22.13 or newer

The lerna package at commit 0be4313 identifies itself as version 10.0.1 and accepts Node ^22.13.0, ^24.0.0, or ^26.0.0. That excludes Node 18 and 20 even if the application packages still run there. Check developer laptops, release runners, and reusable CI images before upgrading. The repository pins a still newer Node for its own development through Volta, which is separate from the published package's engine range.

Installation itself did not require a service or secret in our fresh container. It did require 1,847 packages and left 685 MB on disk, which is a substantial toolchain addition for a repository that only wants version prompts. Teams using ephemeral CI runners should budget the download and cache the package-manager store. A release-only setup may be better served by Changesets if Lerna's task runner will sit unused.

What happened when we ran it

We cloned commit 0be4313 and ran its install, build, and test targets in our 3-CPU, 8 GB sandbox. Installation took 48 seconds, the build completed in 34 seconds, and Vitest passed all 28 tests in 112 seconds with 0 failures. Those results show that the supplied npm workflow was reproducible in the stated unprivileged Node 22 container. They do not measure an application's task graph or the speedup from caching.

Npm audit found 42 known vulnerabilities in the installed tree: 20 high, 20 moderate, 2 low, and 0 critical. The lab block does not identify which packages are affected or whether they ship with the CLI, so the result should not be stretched into a runtime exploit claim. It is still a poor number for teams with strict dependency policy. The checkout occupied 7.7 MB before installation and 685 MB after the package set arrived.

Our scan found 5 CI workflow files, no Dockerfile, and no top-level tests directory. The absence of that directory did not mean there were no tests, since the command found and passed 28 Vitest cases. A supplied container is also unnecessary for normal use, but organizations that standardize builds in images will have to make their own Node 22 base and caching choices.

Nx 23.1.2 powers Lerna's task order and cache

At commit 0be4313, lerna run reads package scripts, respects project dependencies, and can restrict work to packages changed since a Git reference. Modern Lerna delegates that scheduling to Nx. Local caching is available after adding or configuring nx.json, provided the task is deterministic and its outputs are described correctly. The docs specifically warn that a test which calls a backend API is unsuitable for caching because the same inputs can produce different results.

The successful 34-second repository build is evidence that the checked-out task graph worked once, not evidence that Nx will accelerate every monorepo. Cache value depends on repeated inputs and correct output declarations. Distributed task execution goes further and needs Nx Cloud plus CI jobs started by the operator. Nx coordinates those jobs, while the organization still supplies runners with the same source and environment.

Lerna 10 writes versions, Git tags, and npm records

In Lerna 10.0.1, lerna version can update package versions, commit the changes, create tags, and push them. lerna publish adds registry publication, while from-package compares local package versions with npm and publishes newer ones. These commands can save a maintainer from writing release glue, but they also act on Git and the registry. A trial should use lerna init --dryRun, a disposable repository, and a non-production registry before anyone grants publishing credentials.

The docs make another boundary explicit: publishing always goes through npm, even when the workspace uses another package manager. That means .npmrc, registry authentication, access levels, two-factor rules, and Git permissions must all agree. The 112-second test run did not exercise anyone's production registry credentials. An open request for npm security-key support, issue 3273, has a proposed browser-auth implementation in pull request 4417, so affected maintainers should verify its release status before switching.

Recent maintenance is active, with 286 issues and pull requests open

GitHub reported 36,054 stars, an MIT license, and 286 open issues and pull requests when fetched. The last push was September 8, 2026, and release 10.0.1 arrived on August 19, 2026. Recent work included a fix for a missing peer dependency and a change that skips unnecessary package managers during release. The current push date and active pull request discussion matter more than the age of Lerna's original design.

Maturity does not make every old release edge disappear. The 42 audit findings deserve a dependency review, and the security-key publishing request shows that npm authentication changes can expose gaps in established tooling. Still, the clean build and 28 passing tests make Lerna a sensible choice for teams that need both task coordination and package publishing. If only one half is needed, Nx, Turborepo, or Changesets asks for a clearer and usually narrower commitment.

Alternatives

ProjectWhat it isPick it when
Nx gh↗A broader monorepo platform with task graphs, caching, generators, and CI tooling.pick this instead when you want the full Nx project model and automation rather than Lerna's package-oriented commands.
ChangesetsA focused workflow for package versions, changelogs, and publishing in monorepos.pick this instead when release notes and version intent matter more than running the repository's task graph.
Turborepo gh↗A JavaScript and TypeScript build system centered on task caching and execution.pick this instead when builds and CI caching are the main problem and package publishing is handled elsewhere.
RushA policy-heavy monorepo toolchain for large TypeScript repositories.pick this instead when centralized dependency policy and repeatable large-repo administration outweigh a lighter setup.

What people are saying

  1. [velocity-scout] lerna/lerna

Sources

  1. Lerna repository and README
  2. Lerna getting started
  3. Lerna task caching guide
  4. Lerna version and publish guide
  5. Lerna 10.0.1 release
  6. npm security key support issue
  7. Browser authentication pull request

More dev tools reviews

chezmoi · iced · Files · linux · tokio · system-design-notes · the whole board →