Использование разных версий зависимости в разных пакетах рабочей области Yarn - PullRequest
0 голосов
/ 09 июля 2019

Я относительно новичок в использовании Yarn Workspaces и настройке Monorepo, так что извините, если на этот вопрос ответили.Я не верю, что нашел четкий ответ о том, возможно ли это для Monorepo, настроенного с использованием Yarn Workspaces.

Я хотел бы знать, возможно ли использовать две разные версиизависимость (в моем случае TypeScript) в разных пакетах и ​​как это сделать.

Моя цель - заблокировать версию TypeScript (3.4.5) в пакете A и использовать версию root package.json (3.5.0) TypeScript для всех других пакетов в этом monorepo.

Это структура папок.В идеале PackageA будет использовать 3.4.5, а PackageB / PackageC будет использовать любую версию, определенную в корне package.json

|-- packages
    |-- packageA
    |-- packageB 
    |-- packageC
|-- package.json

Это то, что я пробовал до сих пор:

IЯ пытался добавить nohoist в настройках своего рабочего пространства в конфигурации webpack, но я не верю, что Пакет A использует TypeScript 3.4.5, поскольку я не получаю ожидаемого результата.Когда я изменяю требование версии root package.json TypeScript на 3.4.5, то есть, когда я получаю правильный результат, было бы наилучшим сценарием, если бы я мог продолжать использовать последнюю версию TS для всех других пакетов, но оставил бы более низкую версию для PackageA.

Я также попытался добавить package.json в папку PackageA, где он определяет "typescript": "3.4.5" как devDependency.Yarn устанавливает нужную версию в папку PackageA, но, похоже, не использует ее.

Я также уверен, что Yarn resolutions не подходит для этой ситуации, так как мои пакеты не 't определены как зависимости в моем package.json.

snippet of package.json
  "devDependenices: {
    ...,
    "webpack": "^4.34.0",
    "typescript": "3.5.0-rc",
    "yarn": "^1.15.2"
  },
  "workspaces": {
    "packages": [
      "packages/*"
    ],
    "nohoist": [
      "packageA/typescript"
    ]
  }

Если кому-то интересно, PackageA должен использовать TypeScript 3.4.5, потому что мне нужно react-docgen-typescript для разбора значений Prop, которые существуют в Prop, а не в родительских.(т. е. атрибуты HTML на кнопке будут отображаться как опора).Вот ссылка на эту проблему.

Пожалуйста, дайте мне знать, нужна ли дополнительная информация для конфигурации моего проекта!Ценю понимание и советы :) 1033 *

...