link-workspace-packages

Link workspace packages in monorepos (npm, yarn, pnpm, bun). USE WHEN: (1) you just created or generated new packages and need to wire up their dependencies, (2) user imports from a sibling package and needs to add it as a dependency, (3) you get resolution errors for workspace packages (@org/*) lik

By nrwl · 2,446 installs

npx skills add nrwl/nx-ai-agents-config --skill link-workspace-packages

Source repository · Upstream listing

Link Workspace Packages Add dependencies between packages in a monorepo. All package managers support workspaces but with different syntax. Detect Package Manager Check whether there's a packageManager field in the root level package.json . Alternatively check lockfile in repo root: pnpm lock.yaml → pnpm yarn.lock → yarn bun.lock / bun.lockb → bun package lock.json → npm Workflow 1. Identify consumer package (the one importing) 2. Identify provider package(s) (being imported) 3. Add dependency using package manager's workspace syntax 4. Verify symlinks created in consumer's node modules/ pnpm Uses workspace: protocol symlinks only created when explicitly declared. Result in package.json : yarn (v2+/berry) Also uses workspace: protocol. Result in package.json : npm No workspace: protocol. npm auto symlinks workspace packages. Result in package.json : npm resolves to local workspace automatically during install. bun Supports workspace: protocol (pnpm compatible). Result in package.json : Examples Example 1: pnpm link ui lib to app Example 2: npm link multiple packages Example 3: Debug "Cannot find module" 1. Check if dependency is declared in consumer's package.json 2. If not, add it using appropriate command above 3. Run install ( pnpm install , npm install , etc.) Notes Symlinks appear in <consumer /node modules/@org/<package Hoisting differs by manager: npm/bun: hoist shared deps to root node modules pnpm: no hoisting (strict isolation, prevents phantom deps) yarn berry: uses Plug'n'Play by default (no node modules ) Root package.json should have "private": true to prevent accidental publish