关于 link-workspace-packages
介绍如何在 monorepo 中为包添加依赖。技能帮助识别包管理器,并提供 pnpm、yarn、npm 和 bun 对应的 workspace 命令。
主要功能
- 01识别包管理器
- 02添加 workspace 依赖
- 03使用各管理器对应命令
- 04验证包符号链接
- 05排查模块缺失问题
适用场景
- 01将 UI 包链接到应用
- 02添加多个本地依赖
- 03解决模块无法找到的错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nrwl/ nx-ai-agents-config --skill link-workspace-packages安装后在 Claude Code 中输入/link-workspace-packages确认已加载。
详细介绍
链接工作区包
在单体仓库中的包之间添加依赖。所有包管理器都支持工作区,但语法各不相同。
检测包管理器
检查根目录下的 package.json 是否包含 packageManager 字段。
也可以检查仓库根目录中的锁文件:
pnpm-lock.yaml→ pnpmyarn.lock→ yarnbun.lock/bun.lockb→ bunpackage-lock.json→ npm
工作流
- 确定使用方包(导入其他包的包)
- 确定提供方包(被导入的包)
- 使用包管理器的工作区语法添加依赖
- 确认使用方的
node_modules/中已创建符号链接
pnpm
使用 workspace: 协议——只有显式声明后才会创建符号链接。
# From consumer directory
pnpm add @org/ui --workspace
# Or with --filter from anywhere
pnpm add @org/ui --filter @org/app --workspace
package.json 中的结果:
{ "dependencies": { "@org/ui": "workspace:*" } }
yarn(v2+/berry)
同样使用 workspace: 协议。
yarn workspace @org/app add @org/ui
package.json 中的结果:
{ "dependencies": { "@org/ui": "workspace:^" } }
npm
没有 workspace: 协议。npm 会自动为工作区包创建符号链接。
npm install @org/ui --workspace @org/app
package.json 中的结果:
{ "dependencies": { "@org/ui": "*" } }
npm 会在安装期间自动解析到本地工作区。
bun
支持 workspace: 协议(兼容 pnpm)。
cd packages/app && bun add @org/ui
package.json 中的结果:
{ "dependencies": { "@org/ui": "workspace:*" } }
示例
示例 1:pnpm——将 ui lib 链接到 app
pnpm add @org/ui --filter @org/app --workspace
示例 2:npm——链接多个包
npm install @org/data-access @org/ui --workspace @org/dashboard
示例 3:调试“Cannot find module”
- 检查使用方的
package.json中是否声明了依赖 - 如果没有,使用上方的相应命令添加依赖
- 运行安装命令(
pnpm install、npm install等)
注意事项
- 符号链接会出现在
<consumer>/node_modules/@org/<package>中 - 不同管理器的提升行为各异:
- npm/bun:将共享依赖提升到根目录的
node_modules - pnpm:不进行提升(严格隔离,防止幽灵依赖)
- yarn berry:默认使用 Plug'n'Play(没有
node_modules)
- npm/bun:将共享依赖提升到根目录的
- 根目录的
package.json应包含"private": true,以防意外发布
评论
支持 Markdown