Как установить бинарные символические ссылки для каждого пакета в monorepo Yarn Workspace? - PullRequest
0 голосов
/ 07 ноября 2019

На основании этой статьи (и других вместе с комментариями в Интернете) рекомендуется "поднять каждую devDependency, чтобы они были доступны для каждого пакета". Причина в том, чтобы избежать выделения части жирным шрифтом:

Давайте рассмотрим пример, pkg1 и pkg2 определяют ESLint как devDependency, поэтому вы определили, что в двух пакетах дублирует определение и управление. Вы можете извлечь его из обоих и установить его как devDependency в корневом package.json. Таким образом, все проекты, которым он нужен, будут доступны.

Я понимаю, и именно так я настраивал этот конкретный проект.

Но теперь явозникли некоторые проблемы, потому что все инструменты установлены в корне, и двоичные файлы для этих инструментов не совсем доступны при запуске из определенной папки пакета. Как мне решить эту проблему?

Я обнаружил, что указание инструмента в виде devDependency в файле пакета package.json добавляет двоичный файл символьной ссылки для указанного инструмента в папку пакета node_modules/.bin. Однако как избежать первоначальной проблемы с «дублированием определения и управления»?

Например:

root/package.json

"devDependencies": {
  "eslint": "6.6.0"
}

Вариант 1)

root/packages/foo/package.json

"devDependencies": {
  "eslint": "6.6.0"
}

Это создаст символическую ссылку, но у меня есть дубликаты зависимостей для управления.

Вариант 2)

root/packages/foo/package.json

"devDependencies": {
  "eslint": "^6.6.0"
}

Это создаст символическую ссылку, но затем у меня будут дублированные зависимости для управления,хотя мне не нужно беспокоиться о версии, если мне не нужно обновить все пакеты до следующей основной версии.

Вариант 3)

root/packages/foo/package.json

"devDependencies": {
  "eslint": "*"
}

Это создаст символическую ссылку, и нет дублирующихся зависимостей для управления.

Вариант 4)

???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...