- Пользователь создает пустую репу.
- Инициализирует в ней
npm. - Ставит
sharec. - Создает директорию
configsи добавляетsharecвpostinstall. - Сваливает все, что нужно пошарить, в т.ч.
package.jsonс нужной конфигурацией вconfigs. - Публикует свой конфиг или оставляет, в зависимости от того, откуда будет тянуться пакет.
- Пользователь устанавливает опубликованный пакет себе в проект.
sharecхватается за хукpostinstallи начинает мержить конфиги.- Когда все конфиги помержены –
sharecпишет, что все ок, сделайnpm i. - Пользователь делает
npm i.
sharec собирает список все файлов из configs и потом итерирует по ним.
Если файла нет – просто копирует его по заданному пути.
Если файл есть:
- Определяет целевую стратегию. Если стратегии нет – применяет
commonстратегию. - Берет оба файла и прокидывает их в стратегию. Стратегия – чистая функция от двух аргументов: существующий конфиг, новый конфиг.
- После того, как мердж прошел – записывает файл по нужному пути.
Итерирует до тех пор, пока файлы не кончатся.