Обеспечение общих зависимостей в монорепо - PullRequest
0 голосов
/ 01 марта 2019

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

Какие есть варианты, чтобы все пакеты использовали одну и ту же версию определенных зависимостей?Есть ли способ добиться этого без написания пользовательских сценариев?

Я хочу предотвратить эту ситуацию:

my-repo/
  packages/
    pkg-A/
      package.json
        "address-validator": 1.1.0
    pkg-B/
      package.json
        "address-validator": 1.2.0

Я знаю, что вы можете использовать lerna add или lerna run для добавления / обновленияв унисон, но как не дать человеку неосознанно сделать свой пакет уникальным?

1 Ответ

0 голосов
/ 22 августа 2019

Я только что заметил одно приятное решение этой проблемы в приложении create-реагировать на Facebook.Они импортируют (все?) Внешние зависимости в пакет реаги-dev-utils и экспортируют их оттуда.Затем все остальные пакеты, такие как act-scripts , импортируют зависимости из реагирующих устройств разработчика.

Это хорошо, потому что вам нужно беспокоиться только об использовании последней версии одного пакета (например response-dev-utils), чтобы использовать последнюю версию всех вещей, которыми вы хотите управлять.Кроме того, он гибок, потому что вы можете переопределить одну из зависимостей, импортируя другую версию напрямую.

Так что это может выглядеть так:

my-repo/
  packages/
    my-deps/
      pkg1.js // <--- module.exports = require("pkg1");
      package.json
        "pkg1": 1.2.0
    foo/
      index.js // <--- const pkg1 = require("my-deps/pkg1")
      package.json
        "my-deps": 1.1.0
...