Как мне справиться с несколькими зависимостями, которые необходимо построить в разных средах?
Справочная информация: Мы разрабатываем несколько микросервисов Node.js на наших локальных компьютерах Mac OS X. Наша среда разработки - это среда Vagrant/Docker, в которую выполняется запуск кода.
Для конкретного микросервиса мы используем две разные зависимости: ghooks (devDependency) и argon2-ffi (зависимость).
- ghooks использует node-gyp для создания привязок на локальной машине (Mac OS X).
- argon2-ffi использует node-gyp для создания привязок в контейнере Docker (Ubuntu).
Теперь у нас есть проблема в зависимости от того, где npm install
или же npm rebuild
это запустить. Запустите его на локальном компьютере разработчика, и привязки для argon2 не позволят сервису работать в контейнере Docker. Запустите один в контейнере Docker, и привязки неверны для машины dev, поэтому все команды Git завершатся неудачно.
Чтобы усугубить проблему, настроенный ghook ищет изменения в файле package.json при слиянии и автоматически запускает npm install
, (Это поведение на всех дюжинах микросервисов, которые у нас есть, и мы хотели бы попытаться сохранить это поведение.)
Мы попробовали несколько вещей, таких как добавление дополнительных хуков, которые SSH, в контейнер Docker и перестройка при слияниях, но это вызывает проблемы, если машина Vagrant не работает или находится в состоянии ошибки. Мы попытались проверить в Git файлы Linux, создаваемые node-gyp для argon2, но у нас есть автоматические тесты, которые запускаются за пределами контейнера Docker как в наших локальных средах разработки, так и во время процесса сборки в AWS, которые терпят неудачу, поскольку они не запустить внутри контейнера.
Есть ли способ управлять тем, как конкретные зависимости строятся с помощью node-gyp? Еще одна стратегия, о которой мы не думали?