Skip to content

Add pnpm-workspace.yaml to allow esbuild build scripts#1196

Open
ismet wants to merge 1 commit into
Fission-AI:mainfrom
ismet:fix/add-pnpm-workspace-config
Open

Add pnpm-workspace.yaml to allow esbuild build scripts#1196
ismet wants to merge 1 commit into
Fission-AI:mainfrom
ismet:fix/add-pnpm-workspace-config

Conversation

@ismet

@ismet ismet commented Jun 10, 2026

Copy link
Copy Markdown

Problem

pnpm install exits non-zero from a fresh checkout when using pnpm >=10:

[ERR_PNPM_IGNORED_BUILDS] Ignored build scripts: esbuild@0.25.8

This breaks downstream packaging (AUR, Nix, Docker) and any local setup using a distro-packaged pnpm (Arch Linux, Homebrew, etc.).

Root cause

The repository has no pnpm-workspace.yaml. In pnpm 10+, build scripts for all dependencies are blocked by default unless explicitly approved via allowBuilds in the workspace config.

esbuild@0.25.8 is a transitive dependency of vitestvite. Its postinstall script downloads a platform-specific native binary. Without a workspace config, pnpm blocks it and exits non-zero — even though the TypeScript compilation itself does not invoke esbuild directly.

What this PR does

Adds a minimal pnpm-workspace.yaml that explicitly allows esbuild's build script:

allowBuilds:
  esbuild: true

The file is not gitignored (.gitignore only ignores .pnpm-store/), so it will be included in release tarballs going forward.

Why this is safe

  • CI is unaffected — it uses pnpm 9 (via pnpm/action-setup@v4 with version: 9), which predates this feature and ignores unknown workspace config keys
  • Nix builds are unaffectedflake.nix pins pnpm 9 for the same reason
  • Only esbuild needs approval — no other dependencies have build scripts
  • The allowBuilds format is backward-compatible — pnpm 9 ignores it entirely

Downstream impact

Once merged, the workarounds in downstream packagers can be removed.

Summary by CodeRabbit

  • Chores
    • Updated workspace build configuration to enable optimized builds.

pnpm 10+ blocks all dependency build scripts by default unless explicitly
approved via allowBuilds or onlyBuiltDependencies in pnpm-workspace.yaml.

esbuild (transitive dependency of vitest -> vite) has a postinstall script
that downloads a platform-specific native binary. Without this config,
pnpm install exits non-zero with [ERR_PNPM_IGNORED_BUILDS], breaking any
downstream packaging (AUR, Nix, Docker) or local setup using pnpm >=10.

Refs: Fission-AI#1195
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6baf43ac-35a1-423a-884d-269719e08f1c

📥 Commits

Reviewing files that changed from the base of the PR and between 1b06fdd and 4633a5f.

📒 Files selected for processing (1)
  • pnpm-workspace.yaml

📝 Walkthrough

Walkthrough

This PR adds an allowBuilds configuration to pnpm-workspace.yaml, enabling esbuild to perform builds within the workspace context. The change is a minimal two-line addition that permits esbuild execution previously blocked by pnpm's default build restrictions.

Changes

Workspace esbuild Configuration

Layer / File(s) Summary
Enable esbuild builds
pnpm-workspace.yaml
The allowBuilds setting is added with esbuild: true to permit esbuild builds within the workspace.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related issues

Poem

🐰 A workspace wakes, esbuild takes flight,
Two lines of config make the builds just right,
No more blocked runs, the constraint is freed,
pnpm's allowBuilds grants all that we need! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main change: adding pnpm-workspace.yaml configuration to enable esbuild builds. It is concise, specific, and directly relates to the primary purpose of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a pnpm-workspace.yaml config intended to permit build scripts for esbuild.

Changes:

  • Introduces pnpm-workspace.yaml
  • Configures allowBuilds to allow esbuild builds

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pnpm-workspace.yaml
Comment on lines +1 to +2
allowBuilds:
esbuild: true

@alfred-openspec alfred-openspec left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified the clean-install fix in a fresh checkout with pnpm 10.32.1: \ ERR_PNPM_NO_PKG_MANIFEST  No package.json found in /Users/alfred/.openclaw/workspace now allows esbuild's postinstall and \ ERR_PNPM_RECURSIVE_EXEC_NO_PACKAGE  No package found in this workspace passes. The config is scoped to the one dependency that needs a build script and should be included in source tarballs for downstream packagers. Looks good to merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants