Skip to content

Instantly share code, notes, and snippets.

@epszaw
Last active June 5, 2019 18:49
Show Gist options
  • Save epszaw/09a404b6d1e80312b2e6938cd38d8325 to your computer and use it in GitHub Desktop.
Save epszaw/09a404b6d1e80312b2e6938cd38d8325 to your computer and use it in GitHub Desktop.

Sharec flow

Подготовка конфига

  1. Пользователь создает пустую репу.
  2. Инициализирует в ней npm.
  3. Ставит sharec.
  4. Создает директорию configs и добавляет sharec в postinstall.
  5. Сваливает все, что нужно пошарить, в т.ч. package.json с нужной конфигурацией в configs.
  6. Публикует свой конфиг или оставляет, в зависимости от того, откуда будет тянуться пакет.

Последовательность действий при установке готового конфига

  1. Пользователь устанавливает опубликованный пакет себе в проект.
  2. sharec хватается за хук postinstall и начинает мержить конфиги.
  3. Когда все конфиги помержены – sharec пишет, что все ок, сделай npm i.
  4. Пользователь делает npm i.

Как происходит мердж

sharec собирает список все файлов из configs и потом итерирует по ним.

Если файла нет – просто копирует его по заданному пути.

Если файл есть:

  1. Определяет целевую стратегию. Если стратегии нет – применяет common стратегию.
  2. Берет оба файла и прокидывает их в стратегию. Стратегия – чистая функция от двух аргументов: существующий конфиг, новый конфиг.
  3. После того, как мердж прошел – записывает файл по нужному пути.

Итерирует до тех пор, пока файлы не кончатся.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment