У меня есть веб-приложение на основе largi sh nodejs, в котором компоненты сервера и клиента работают вместе. В настоящее время я развертываю приложение, но использую git pull
, чтобы взять мою последнюю производственную ветку из репозитория сервера. Хук git post-commit
запускается для выполнения npm install
и перестройки файла .env
серверов, а PM2 отслеживает различные процессы (3 веб-сервера), используя изменения в файле .env для их перезапуска.
node_modules находится на самом высоком уровне проекта с отдельными подкаталогами сервера и клиента. Так как это использует http2 на быстрой локальной сети, я не беспокоюсь о сжатии файлов клиента с помощью веб-пакета или чего-то подобного, хотя я использую сведение на lit-element
и lit-html
для сортировки операторов импорта (они не являются относительный или абсолютный), что они в них встроены.
Я только что читал, что действительно должен был сделать npm ci
для моих зависимостей узлов, но читая инструкции, в которых говорится, что он уничтожает каталог node_modules и запускается снова (тогда как npm install
не делает). Так как все это работает на малиновом пи, это не мгновенно.
Я не уверен, что временная потеря node_modules должна слишком сильно повлиять на работающее приложение - в конце концов, я считаю, что все модули будут кэшированы в памяти, но это может не произойти, и есть также вероятность того, что серверов падает и pm2 перезапускает его, так что мне интересно ....
Итак, что является лучшей практикой здесь. Можно ли, например, скопировать package.json
, package-lock.json
в специальный подкаталог build
, построить там каталог node_modules
, а затем переместить его на место. Однажды построенный. Или есть лучший способ?