You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Yarn Workspaces以安装packages子目录中嵌套的package.json?

如何配置Yarn Workspaces以安装packages子目录中嵌套的package.json?

嘿,我之前也碰到过一模一样的问题,咱们来一步步捋清楚咋解决~

首先得明白为啥Yarn没在snackbar/example下生成node_modules:你根目录package.json里的workspaces配置只写了packages/*,这意味着Yarn只会把packages下直接的子文件夹(也就是snackbar)当成独立的workspace,而嵌套在snackbar里的example目录,Yarn默认不会自动识别它的package.json

下面是具体的解决步骤:

1. 扩展Workspaces配置,纳入嵌套的example目录

修改根目录的package.json,把嵌套的example路径添加到workspaces数组里:

{
  "workspaces": [
    "packages/*",
    "packages/*/example"
  ],
  "packageManager": "yarn@3.6.1",
  "private": true,
  // 其他原有配置...
}

这个配置的意思是:既包含packages下所有直接子目录,也包含这些子目录下的example目录,这样Yarn就会把snackbar/example也当成一个独立的workspace来处理了。

2. 重新执行安装命令

保存配置后,回到根目录运行:

yarn install

这时候Yarn就会读取snackbar/example/package.json里的依赖,再结合你设置的nmHoistingLimits: workspaces,每个workspace的依赖会优先安装在自己的node_modules目录下,所以snackbar/example里应该就能看到对应的node_modules文件夹了。

额外注意点

  • 要确保snackbar/example/package.json里的name字段是唯一的,Yarn要求每个workspace必须有不重复的名称,不然可能会出现安装报错。
  • 如果example只是snackbar的附属示例项目,不想把它当成独立workspace,也可以把example的依赖移到snackbar/package.jsondevDependencies里,然后运行yarn workspace [snackbar的name] install,不过这样依赖会装在snackbar的node_modules里,你可以根据自己的需求选。

备注:内容来源于stack exchange,提问作者flix

火山引擎 最新活动