Как правильно запаковывать и транспортировать проект на NodeJS

Здравствуйте!

Подскажите, пожалуйста, какие могут быть пути решения в моей ситуации. На JS/NodeJS перешёл недавно - прошу не кидаться камнями за профанский вопрос и где-то неправильные формулировки.

Есть:

  • проект, где используется фреймворк webdriverio;
  • машина на centOS, на которой нет интернет-доступа;

Поставил докер, залил образы селеноида, браузеров - всё ок, запускается. А вот с проектом затык, тесты не стартуют. :frowning:

На просторах интернета нашёл следующие способы (не знаю насчёт актуальности):

  1. npm pack: указал в package.json bundleDependencies, упаковал. Чтобы установить пакеты оффлайн, сохранил кэш npm машины с доступом в интернет, перенёс на тачку без доступа, сделал npm install project.tgz --offline - всё равно за некоторыми библиотеками лезет на https://registry.npmjs.org. Подозреваю, я как-то неправильно пользуюсь кэшем - там есть не все нужные библиотеки, использующиеся в проекте. Есть какой-то способ добавить все модули проекта в глобальный кэш?
  2. просто упаковал проект в архив безо всяких, перенёс его и кэш на тачку без интернета, сделал npm install --offline - никаких ошибок. Запускаю тест - начинаются то с Fibers (ставил при конфигурации wdio-sync) проблемы, то надо g++ ставить (на машине с убунтой всё прекрасно заводилось без этого).
  3. Насколько я понял, многие разворачивают нпм, используя Nexus Repository Manager. Есть смысл в моей ситуации с этим разобраться или есть проще способы?

В общем, резюмируя: интересно узнать, как православно перетащить проект на webdriverio на другую машину и как всё это устанавливать правильно.

Если это важно, то:
node: v10.15.3
npm: 6.41.1
webdriverio 5

Заранее спасибо!

npm install --offline - никаких ошибок

а если не делать install и просто запустить тесты? у вас по идее уже правильный node_modules в архиве. разница, конечно, может быть из-за нативных модулей, но все же скорее всего будет работать.

проблемы, то надо g++ ставить

а если поставить? на убунту тоже нужно ставить “build-essential”, чтобы собрать нативные модули для файберов.

Я бы предложил вам собирать ваши тесты в docker image и передавать image на этот хост так же как вы образы для selenoid разворачивали.
Или собрать образ с wdio(точнее с правильными node_modules) и через docker volumes добавлять ваши тесты при старте контейнера.

2 лайка

Спасибо! Получилось запустить без npm install. Попробую установить GCC, который требуется, тогда отпишусь. Насчёт того, чтобы собрать в докер-образ свой проект я тоже думал, но не особо понимал, как это реализуется, и сомневался, что так делают вообще. Спасибо большое за наводку, Борис!