Вы должны полюбить это!

Команда пряжи только что запустила набор RFC для рабочих пространств (# 3294)!

Вам, как разработчику фреймворка и автору библиотеки, это должно понравиться! Сегодня мои проектные группы предпочитают решение, в котором мы помещаем один package.json в корневую папку и по одному package.json в подкаталоги для каждого «подмодуля».

В среде IDE это выглядит так:

При таком подходе мы всегда можем cd packages/<pkg> && yarn run build запустить сборку для отдельного модуля. Мы записываем артефакты сборки в dist/<pkg> каталог для каждого модуля.

Зависимости распределяются между модулями и управляются в корневом каталоге package.json. По этой причине yarn install нельзя запускать вне корневого каталога!

В этой структуре папок общие зависимости хранятся в node_modules папке корневого каталога, так что каждый из подмодулей связан с общими зависимостями.

Однако случайно запуск yarn install в папке подмодуля создает папку nestednode_modules, что вызывает хаос в сборке. В частности, рабочие области устанавливает RFC (# 60) действительно помогут нам здесь, решив « дочерние пакеты для установки в один node_modules в корневом пакете (# 711» ).

Я думаю, что такой макет лучше, чем работа с локальными file:// зависимостями, которые замедляют разработку и имеют другие проблемы, такие как # 2165.

Обычно мы также помещаем (глобальный) скрипт сборки в корневую папку! Он просто перебирает каждый из packages/* подкаталогов и выполняет yarn run build в этой папке. Для общих задач сборки, помощников и друзей мы храним каталог tools на корневом уровне. Модули могут повторно использовать общую задачу сборки или при необходимости настраивать. Было бы очень круто получить функцию «запускать скрипт для каждого подмодуля» из yarn!

Лично я очень жду этого RFC! Мне бы хотелось, чтобы подмодули yarn вели себя подобно тому, как Gradle обрабатывает многопроекты! Поскольку RFC еще очень молод, давайте посмотрим, что произойдет!