如何使用 Yarn 定位单个工作区?

How to target a single workspace with Yarn?

我有这样设置的工作区

"private": true,
  "workspaces": {
    "packages": [
      "packages/*"
    ],
    "nohoist": [
      "**/firebase-admin",
      "**/firebase-admin/**",
      "**/firebase-functions",
      "**/firebase-functions/**"
    ]
  },

在我的包目录中,我有一个文件夹 common,其中有一个文件夹 package.json

当我执行 yarn workspaces run build 时,它会触发所有工作区的构建脚本。但是,如果我尝试使用像 yarn workspace common build 这样的 yarn workspace 命令来定位一个特定的工作区,我会不断收到错误消息:

error Unknown workspace "common".

这是我从 yarn workspaces info 得到的输出:

yarn workspaces v1.17.0
{
  "@gemini/cli": {
    "location": "packages/cli",
    "workspaceDependencies": [],
    "mismatchedWorkspaceDependencies": []
  },
  "@gemini/cloud-functions": {
    "location": "packages/cloud-functions",
    "workspaceDependencies": [
      "@gemini/common"
    ],
    "mismatchedWorkspaceDependencies": []
  },
  "@gemini/common": {
    "location": "packages/common",
    "workspaceDependencies": [],
    "mismatchedWorkspaceDependencies": []
  },
  "@gemini/tools": {
    "location": "packages/tools",
    "workspaceDependencies": [],
    "mismatchedWorkspaceDependencies": []
  }
}

我曾尝试将名称更改为 package/common 或 @gemini/common 但没有成功。

我在这里错过了什么?

当你想在特定工作区调用命令时,你应该使用在其 package.json 文件 "name" 中设置的包名称。在你的情况下应该是:

yarn workspace @gemini/common build

I have tried changing the name to package/common or @gemini/common but without luck.

您应该看不到错误 error Unknown workspace "@gemini/common". 也许您遇到了其他错误?

如果您想在工作区 <workspace> 中 运行 一个 build 脚本,那么该命令的语法是

yarn workspace <workspace> build

例如,我的根 package.json 中有以下内容:

  "workspaces": [
    "api",
    "app"
  ],

那么我可以运行 yarn workspace api build.