Как настроить Yarn на единое рабочее пространство?

У меня настроены такие рабочие пространства

"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, но безуспешно.

Что мне здесь не хватает?


person Thijs Koerselman    schedule 28.06.2019    source источник
comment
убедитесь, что вы используете имя пакета, определенное в файле package.json, а не имя папки.   -  person Rafael Rozon    schedule 04.09.2020


Ответы (2)


Если вы хотите вызвать команду в определенной рабочей области, вы должны использовать имя пакета, которое установлено в его файле package.json "name". В вашем случае это должно быть:

yarn workspace @gemini/common build

Я попытался изменить имя на package / common или @ gemini / common, но безуспешно.

Вы не должны видеть ошибку error Unknown workspace "@gemini/common". Может быть, вы получаете другую ошибку?

person user123    schedule 28.06.2019
comment
Я был так уверен, что пробовал это… Должно быть, я увидел другую ошибку, когда сделал это. Но теперь это работает, спасибо! - person Thijs Koerselman; 28.06.2019
comment
почему это не работает для установки? У меня точно такая же настройка, но везде устанавливается node_modules. Я просто хочу сделать это для проекта плотины. - person Red Baron; 19.03.2020
comment
Это, похоже, не работает: например, yarn workspace foo upgrade-interactive предлагает обновления пакетов во всех рабочих областях, а не только _2 _... Есть ли способ ограничить это только этим рабочим пространством? - person ᆼᆺᆼ; 06.11.2020
comment
Краткий ответ на ваш конкретный вопрос - Нет. Я бы посоветовал узнать больше об управлении зависимостями с помощью пряжи V1 или создать специальный вопрос о вашей проблеме. - person user123; 06.11.2020

Если вы хотите запустить build скрипт в рабочей области <workspace>, то синтаксис команды следующий:

yarn workspace <workspace> build

Например, у меня в корне package.json есть следующее:

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

Итак, я могу запустить yarn workspace api build.

person dinvlad    schedule 28.06.2019
comment
Все мои рабочие области находятся в подкаталоге пакетов. Я пробовал пакеты / общие, но это было не так. Очевидно, вам нужно использовать имя модуля. В вашем случае это то же самое, что и имя каталога пакета вашей рабочей области, но это не то, что требует команда. - person Thijs Koerselman; 29.06.2019