Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

NodeJS сборка проекта?

Пишу сайт Front(NodeJs+Vue3), Back(NodeJs+MongoDB).
Суть в чем: у Vue3 js есть vue-cli, который позволяет собрать проект в 3 файла(app.js, chunk-vendors.js, app.css), код при этом сразу обфусфированный(привиден в трудночитаемый вид). Для того, чтобы произвести сборку достаточно ввести npm run build(это скрипт, который по сути запускает vue-cli сборщик и он прописан в package.json).Однако, серверную часть(Back), я пишу в основном файле index.js, куда ставил несколько необходимых модулей(прописаны в package. json).
Вопрос: можно ли произвести сборку силами ноды или нужно ставить отдельный пакет для сборки. Необходимо произвести сборку так, чтобы выходной файл был незавсим, т. е. я мог запустить его на любом компьютере, где есть node js, даже без установленных модулей
ТехнологииПрограммирование+2
Илья Братских
  ·   · 2,5 K
Лучший
старший разработчик в pseven.io  · 28 окт 2021
В данном случае это скорее вопрос не сборки, а развёртывания.
Локально у вас проект успешно собирается и запускается. Теперь вам нужно развернуть его на некоем абстрактном сервере, окружение которого вы не контролируете. Там может не быть ни Node.js, ни MongoDB, или (что хуже) могут быть установлены несовместимые версии. Заранее неизвестно, какая там ОС, и нет доступа к шеллу, чтобы запустить все нужные команды. Тем не менее, нужен какой-то способ предоставить ваше приложение со всеми нужными ему зависимостями и запустить его одним простым действием.
Для решения этой задачи в современной веб-разработке используется контейнеризация. Вот инструкция с официального сайта, описывающая упаковку приложения Node.js в Docker-контейнер. Технически при этом происходит следующее:
  • создаётся контейнер, содержащий все нужные зависимости; у вас это Node.js и MongoDB, но в будущем могут появиться и другие
  • в контейнер копируются файлы приложения; содержимое node_modules при этом не копируется - оно будет установлено уже по месту работы, т.к. установка некоторых модулей зависит от платформы
  • пишется скрипт запуска, который выполняет все нужные команды; в данном случае это одна только npm ci --only=production, но опять же в будущем может добавиться что-то ещё
  • открываются сетевые порты, нужные для работы приложения
Конечному потребителю при этом предоставляется готовый контейнер, который ему остаётся только запустить.
P.S. Не могу не заострить внимание ещё на одном моменте. Если ваше приложение будет доступно через интернет, то старайтесь не писать код, непосредственно обрабатывающий http-запросы или формирующий запросы к БД. Это прямая дорога к уязвимостям, которые никто не поправит, пока не станет поздно. Вместо этого лучше использовать известный код, прошедший аудит на безопасность. Возьмите какой-нибудь популярный бэкенд-фреймворк, например NestJS.
Что-то осталось непонятно? Спроси в нашей группе в Телеграме!Перейти на t.me/jstsmentor
5 экспертов согласны
Да, если не углубляться в детали, завернуть всё в контейнер будет самым простым решением.
Некая субстанция, сгусток мыслей, выплеснвушийся...  · 26 окт 2021
Здесь есть 2 видимых варианта выхода из ситуации: 1. Упаковать NodeJS + модули + код сервера + сборку Vue.js в запускаемый файл (например, exe для Windows). Что-то подобное можно реализовать через Electron, но он еще содержит... Читать далее
1 эксперт не согласен
Извините, но подтвердить этот ответ в его текущем виде я не могу. Я верю в благие намерения автора, в то что он... Читать дальше