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

时间:2019-06-28 18:20:53

标签: yarnpkg yarn-workspaces

我有这样的工作区

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

在我的软件包目录中,我有一个文件夹common,以及它自己的package.json等。

当我执行yarn workspaces run build时,它将触发所有工作空间的构建脚本。但是,如果我尝试使用yarn workspace之类的yarn workspace common build命令来定位一个特定的工作区,则会不断出现错误:

  

错误未知工作空间为“公用”。

这是我来自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,但是没有运气。

我在这里想念什么?

2 个答案:

答案 0 :(得分:0)

当您要在特定工作空间上调用命令时,应使用在其package.json文件“名称”中设置的软件包名称。您的情况应该是:

yarn workspace @gemini/common build
  

我尝试将名称更改为package / common或@ gemini / common,但没有运气。

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

答案 1 :(得分:0)

如果您想在工作区build中运行<workspace>脚本,则该命令的语法为

yarn workspace <workspace> build

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

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

这样我就可以运行yarn workspace api build