Link Workspace Packages

nrwl/nx-ai-agents-config/generated/.github/skills/link-workspace-packages

作者 nrwl40b723ccaa3a266a2c016acc62aa9285af172924無授權條款28 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫今天更新

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/*) like "cannot find module", "failed to resolve import", "TS2307", or "cannot resolve". DO NOT patch around with tsconfig paths or manual package.json edits - use the package manager's workspace commands to fix actual linking.

AI 產生的概覽

指導在 monorepo 中使用 npm、yarn、pnpm 或 bun 的工作區指令連結工作區套件。

功能
說明如何透過辨識套件管理員並使用其工作區語法,在 monorepo 中為套件之間加入相依性。內容涵蓋 pnpm、yarn berry、npm 和 bun,展示產生的 package.json 項目並驗證符號連結。也包含排查工作區套件匯入解析錯誤的步驟。
適用情境
適用於剛建立或產生新套件而需要連接相依性時、需要將同層套件的匯入加入為相依性時,或工作區套件出現 cannot find module、TS2307 等解析錯誤時。
執行需求
無指令碼,僅為說明。需要一個使用套件管理員(npm、yarn、pnpm 或 bun)的 monorepo,並具備其鎖定檔或 packageManager 欄位。

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.

bash
# From consumer directorypnpm add @org/ui --workspace
# Or with --filter from anywherepnpm add @org/ui --filter @org/app --workspace

Result in package.json:

json
{ "dependencies": { "@org/ui": "workspace:*" } }

yarn (v2+/berry)

Also uses workspace: protocol.

bash
yarn workspace @org/app add @org/ui

Result in package.json:

json
{ "dependencies": { "@org/ui": "workspace:^" } }

npm

No workspace: protocol. npm auto-symlinks workspace packages.

bash
npm install @org/ui --workspace @org/app

Result in package.json:

json
{ "dependencies": { "@org/ui": "*" } }

npm resolves to local workspace automatically during install.


bun

Supports workspace: protocol (pnpm-compatible).

bash
cd packages/app && bun add @org/ui

Result in package.json:

json
{ "dependencies": { "@org/ui": "workspace:*" } }

Examples

Example 1: pnpm - link ui lib to app

bash
pnpm add @org/ui --filter @org/app --workspace

Example 2: npm - link multiple packages

bash
npm install @org/data-access @org/ui --workspace @org/dashboard

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

來源與署名

來源:nrwl/nx-ai-agents-config位於generated/.github/skills/link-workspace-packages提交40b723c

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架