Лучшая практика для развертывания nodejs - прямое перемещение node_modules на сервер или запуск команды npm install - PullRequest
0 голосов
/ 05 июня 2018

Как лучше всего развертывать приложение nodejs?

1) Непосредственное перемещение папок node_modules с сервера разработки на рабочий сервер, чтобы в рабочей среде можно было также создать нашу же локальную среду.Какие бы изменения ни были внесены в любой из узловых модулей удаленно, это не повлияет на наш код.

2) Запустите команду npm install на производственном сервере с помощью package.json.Здесь проблема в том, что любые изменения в модулях узла будут влиять на наш код.Я столкнулся с некоторыми проблемами с модулем обратной связи ( ссылка на проблему ).

Кто-нибудь может мне помочь?

Ответы [ 5 ]

0 голосов
/ 06 февраля 2019
  • Перемещение папки node_modules переполнено.
  • Запуск npm install может нарушить зависимости от версии.
  • Лучший подход - npm ci.Он использует файл package_lock и устанавливает необходимые зависимости без изменения версий.npm ci предназначен для непрерывной интеграции проектов. ССЫЛКА
0 голосов
/ 01 декабря 2018

Я разработчик ASP.NET Core, но недавно я начал работать с приложениями Node.js.Для меня это была одна из проблем, которую вы упомянули, чтобы переместить папку node_modules в производство.Вместо того, чтобы переместить всю папку в производственную среду или выполнить только команду npm install на производственном сервере, я решил найти способ связать свое приложение Node.js, используя Webpack, в один / несколько пакетов, и я просто избавился от него.беспорядка управления папкой node_modules.Он только выбирает необходимые пакеты node_modules, которые используются / упоминаются в моем приложении, и объединяется в один файл вместе с кодом моего приложения, и я развертываю этот единственный файл в рабочей среде, не перемещая всю папку node_modules.

Я нашел этот подход полезным в моем случае, но, пожалуйста, предложите мне, если это не правильный путь относительно производительности приложения или если какие-либо недостатки этого подхода.

0 голосов
/ 05 июня 2018

Выполнение npm install на производственном сервере невозможно в определенном сценарии (отсутствие инструментов компиляции, ограниченный доступ в Интернет и т. Д.), А также, если вам нужно развернуть один и тот же проект на нескольких машинах, это может быть пустой тратойПроцессор, память и пропускная способность.

Вы должны запустить npm install --production на машине с такими же библиотеками и версией узла рабочего сервера, сжать node_modules и развернуть на рабочем сервере.Вам также следует сохранить файл package-lock.json для точного определения версий.

Этот подход позволяет также создавать / тестировать код с использованием пакетов разработки и затем удалять модули node_modules перед фактическим развертыванием.

0 голосов
/ 05 июня 2018

Определенно npm install.Но вы не должны делать это своими руками, когда дело доходит до развертывания вашего приложения.

Используйте для этого инструмент, например PM2 .

Что касается вашего беспокойства оизменения в пакетах, краткий ответ package-lock.json.

0 голосов
/ 05 июня 2018

Я предполагаю, что, задавая этот вопрос, вы на самом деле не понимаете смысла файла package.json.

Файл package.json явно предназначен для этой цели (то есть и загрузки вnpm registry), передача пакета узла без необходимости переноса значительного числа зависимостей вместе с ним.

Я бы сказал, что никогда не нужно вручную перемещатьКаталог node_modules вообще.

Обязательно используйте команду npm install на вашем производственном сервере, это правильный способ сделать это.Чтобы избежать каких-либо изменений в каталоге node_modules по сравнению с локальной средой, используйте файл package lock.Это должно помочь свести к минимуму изменения исходного кода в node_modules.

Я имею в виду не плохое намерение, сказав это

...