Skip to content

chore: manage the workspace with pnpm - #90

Merged
otnc merged 3 commits into
mainfrom
chore/pnpm
Oct 16, 2026
Merged

otnc merged 3 commits into
mainfrom
chore/pnpm

Conversation

@otnc

@otnc otnc commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Follow-up to the monorepo and TypeScript work (#17, #18). Why: npm 10.9 crashes resolving the workspace (edgesOut) so lockfile updates needed npm 11; pnpm is strict about undeclared dependencies, has --filter for per-package scripts, and matches funmary-app.

  • pnpm-workspace.yaml, packageManager: pnpm@11.22.0, pnpm-lock.yaml; package-lock.json and the npm workspaces field removed
  • Packages declare their own build tools (typescript, tsdown, vitest, @types/node) because pnpm does not hoist undeclared ones; root gets vitest explicitly
  • Root scripts use pnpm; typecheck:ts / test:packages use pnpm --filter \"./packages/*\" (quoted so the shell does not expand the glob; the root has its own test/typecheck scripts for MoonBit)
  • CI and _release.yml: pnpm/action-setup (v6.1.0, SHA-pinned) before setup-node with cache: pnpm; pnpm install --frozen-lockfile; tests/builds through pnpm --filter; publishing and version bumps still use the npm CLI in each package directory (Trusted Publishing is an npm feature; npm version no longer needs the -w workspace flag). Release commits stage only package.json (and moon.mod for the compiler), since pnpm has no root lockfile entry for versions
  • Docs, skill and .prettierignore updated. End users are unaffected (purus new is package-manager agnostic)

Also fixes: dist/ build outputs of the wrapper and both packages were accidentally committed in #85 (that branch predated the dist/ ignore entry); they are untracked in a separate commit.

Verified locally: pnpm install --frozen-lockfile, pnpm run build, typecheck, ESLint, Prettier, wrapper tests (25), package tests (12 + 8), per-package builds; npm version and npm pack in a package directory. The release workflow itself cannot be exercised without publishing; the first real release after merging is the test.

Also removes packages/mcp/dist/index.js: compiled output of the third-party purus-mcp (unlicensed, not part of this repo) that was swept into #72 by a git add -A from leftovers of the abandoned import (packages/mcp and packages/language-server leftover directories were also cleaned locally). The file still exists in the history of #72; rewriting main would need the ruleset lifted, so it is left to the maintainer to decide.

otnc added 3 commits October 16, 2026 12:54
dist/ of the wrapper and of the packages was committed by accident in #85 (the branch predated the dist/ gitignore entry).
….yaml, packageManager)

CI and the release workflow use pnpm/action-setup; installs use --frozen-lockfile; packages are published with the npm CLI (Trusted Publishing is an npm feature).
…cp/dist) that slipped into #72

purus-mcp is third-party and unlicensed; it is not part of this repository (see ADR 0001). The file was a leftover of the abandoned import.
@otnc
otnc merged commit 7275822 into main Oct 16, 2026
8 checks passed
@otnc
otnc deleted the chore/pnpm branch October 16, 2026 03:58
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.

1 participant