Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions .npmrc

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ npm run build && npm run start:gnome # or the yarn / pnpm equivalent
Notes:

- **gjsify is the canonical path** — the committed `gjsify-lock.json` and the offline Flatpak build use it. npm/yarn/pnpm generate their own lockfiles (gitignored); they're fine for local dev, please don't commit them.
- **pnpm** relies on the committed `pnpm-workspace.yaml` (pnpm doesn't read the `workspaces` field) plus `.npmrc` — `link-workspace-packages=true` (so plain `^` ranges link the local workspaces) and `node-linker=hoisted` (flat layout the gjsify bundler needs).
- **pnpm** relies on the committed `pnpm-workspace.yaml` (pnpm reads its workspace members + settings there, not the `workspaces` field or a project `.npmrc`) — `linkWorkspacePackages: true` (so plain `^` ranges link the local workspaces) + `nodeLinker: hoisted` (flat layout the gjsify bundler needs).
- The internal packages use plain `^x.y.z` ranges (not the `workspace:` protocol), which is why every manager — including npm and classic yarn — can resolve them.
- A manual **Package Managers** CI workflow verifies all four managers install + resolve the workspaces; trigger it from the Actions tab if you touch the dependency wiring.

Expand Down
21 changes: 18 additions & 3 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# pnpm reads workspace members from this file (it does NOT read the package.json
# "workspaces" field). Install behaviour (link-workspace-packages, node-linker)
# lives in .npmrc.
# pnpm config lives here (pnpm 10 reads settings from pnpm-workspace.yaml, NOT
# the package.json "workspaces" field, and — unlike npm — not reliably from a
# project .npmrc).
#
# - linkWorkspacePackages: the internal deps use plain `^x.y.z` ranges (not the
# `workspace:` protocol). pnpm 10 defaults this to false, so without it pnpm
# fetches @learn6502/* from the registry (404, unpublished) instead of linking
# the local workspace.
# - nodeLinker: flat node_modules (like npm/yarn/gjsify). pnpm's default strict
# symlinked layout hides the gjsify bundler's node-builtin polyfills
# (@gjsify/node-globals etc.) → `--globals auto` fails the build with
# "Unsupported URI scheme for importing: node".
# - minimumReleaseAge: 0 disables pnpm's new-version quarantine. The other PMs
# (npm/yarn/gjsify) have no such gate, so this keeps pnpm consistent and stops
# it blocking freshly-published @gjsify/* right after a gjsify release.
packages:
- "packages/*"
linkWorkspacePackages: true
nodeLinker: hoisted
minimumReleaseAge: 0
Loading