Время компиляции собственных зависимостей занимает слишком много времени в узле

#node.js #npm #electron #yarnpkg

#node.js #npm #electron #yarnpkg

Вопрос:

Я настраиваю бегун gitlab, который создает мой проект узла. Одна зависимость nodegit — это то, что требуется 480 seconds каждый раз, когда я создаю свое приложение.

 $ electron-builder install-app-deps
  • electron-builder  version=22.9.1
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  dependencies=nodegit@0.27.0 platform=darwin arch=x64
  • rebuilding native dependency  name=nodegit version=0.27.0
Done in 480.36s.
  

Есть ли какой-либо способ кэшировать построение этих собственных зависимостей? Я нашел предварительную сборку, которая создала tar.gz файл. Но я не уверен, как я могу заставить свой проект использовать этот конкретный готовый файл. Любая помощь высоко ценится!

Комментарии:

1. Рассмотрите возможность настройки кэша GitLab CI / CD в встроенном node_modules каталоге или в любом другом встроенном каталоге зависимостей.

2. Спасибо! Это было бы значительным улучшением! Доступно ли решение, отличное от Gitlab, через prebuild ?

3. Судя по его описанию, это так. Однако документация не поддается быстрому объяснению — кажется неясным, как она взаимодействует node_modules . Большинство систем CI / CD поддерживают кэширование встроенных / извлеченных зависимостей, и локально они также будут кэшироваться. Я не особенно уверен prebuild , что здесь это необходимо . Однако, если вам это нужно prebuild , я бы рекомендовал обновить ваш вопрос, чтобы отразить его. Если вы предоставите более подробную информацию о вашей настройке GitLab CI / CD (идеально подходит репозиторий с минимальным воспроизведением), я могу попробовать оптимизировать время сборки.

Ответ №1:

Простой поиск в Google обнаружил зависимости кеша на веб-сайте GitLab CI / CD, на котором, похоже, есть именно то, что вы ищете. Который также может кэшироваться Node.js зависимости PHP, Go и Ruby между заданиями.

Ответ №2:

Этап предварительной сборки необходимо включить в фазу публикации зависимого модуля. Оно не должно выполняться потребителем модулей.