Я пытаюсь найти правильный подход для монорепозитория javascript. Представьте монорепозиторий, содержащий пакеты/библиотеки:
root
- node_modules
- packages
+ lib-a
* node_modules
+ lib-b
* node_modules
Теперь предположим, что пакеты lib-a
и lib-b
используют webpack
в качестве инструмента сборки.
я вижу два подхода
Добавьте
wepback
в качестве зависимости к root. Включите скрипт "сборки" в оба пакета:"build": "webpack -p --config webpack.config.js
.webpack.config.js
может включать кореньwebpack.config.js
. Затем я мог бы использовать такой инструмент, какlerna
, для запуска сборки из корневого каталога (что означает, что двоичный файлwebpack
распознается. Однако я не смогу запустить сборку в определенных пакетах, посколькуwebpack
там недоступен. Я мог бы, вероятно, изменить скрипт сборки на что-то нравится"build": "../../node_modules/.bin/webpack -p --config webpack.config.js
Всегда включайте
webpack
в каждый пакет. Это означает, что сценарийbuild
завершится успешно. Это также означает, что каждый пакет будет иметь одинаковую зависимость, и мне, вероятно, следует следить за тем, чтобы каждый пакет использовал одну и ту же версиюwebpack
.
По сути, я имею в виду, как должны быть структурированы пакеты внутри монорепозитория? Если какой-либо пакет опубликован, всегда должна быть возможность build
этого пакета отдельно.