Я новичок в программировании на Node.js, и недавно я создал образец рабочего веб-приложения, используя (экспресс, магистраль и другие дополнительные технологии просмотра с mongoDB). Теперь я нахожусь в точке, где я хочу развернуть то же самое в промежуточной среде, и я не уверен, как упаковать это приложение и распространить его. [Я могу позаботиться о mongoDb и настроить его отдельно]
Я из мира Java, и там мы создаем jar-файлы для многоразовых библиотек и пакеты war / ear для веб-приложений, которые развертываются в контейнере сервлетов. В этом случае, поскольку node.js сам действует как веб-контейнер, как мне упаковать свое веб-приложение?
- Есть ли какой-либо стандартный формат / рекомендации по упаковке веб-приложений для узлов, созданных с использованием экспресс? (Есть ли аналогичные системы упаковки jar / war для приложений node?)
- Как мне развернуть его после упаковки? Станет ли он exe-файлом, поскольку он также является собственным контейнером?
PS: На данный момент я думаю о том, чтобы просто вручную скопировать все необходимые исходные файлы в промежуточную среду и запустить команды npm, чтобы загрузить все зависимости на этот компьютер, а затем использовать «навсегда» или какой-либо другой механизм для запуска моего server.js. (Кроме того, добавьте своего рода мониторинг, на случай, если приложение выйдет из строя и навсегда выйдет из строя). Я не уверен, что это правильный путь? Я уверен, что должен быть какой-то стандартизированный способ решения этой проблемы.
Ответы:
Стандартизированного пути не существует, но вы на правильном пути. Если ваш
package.json
каталог обновлен и находится в хорошем состоянии, вы можете просто скопировать / zip / clone каталог вашего приложения в производственную систему, за исключениемnode_modules
.В производственной системе запустите,
npm install
чтобы установить зависимости,npm test
если у вас есть тесты и, наконец,NODE_ENV=production node server.js
Некоторые недавние слайды, которые я считаю весьма полезными, которые также включают тему оберток, например, forever, можно найти здесь .
источник
Развертывать
Node.js
приложения очень просто. В maven естьpom.xml
. Связанное понятие вNode.js
ispackage.json
. Вы можете указать свои зависимости отpackage.json
. Вы также можете выполнить настройку средыpackage.json
. Например, в среде разработки вы можете сказать, чтоно в производстве;
У вас есть локальные репозитории для maven в
.m2
папке. В Node.js естьnode_modules
папка под вашим проектом Node.js. Вы можете увидеть папки модуля с его названием.Перейдем к
grunt
части этого ответа.Grunt
это диспетчер задач для ваших внешних ресурсов, html, javascript, css. Например, перед развертыванием вы можете минимизировать html, css, javascript даже изображения. Вы также можете добавитьgrunt
функции запуска задачpackage.json
.Если вы хотите взглянуть на пример приложения, вы можете найти приложение блога пример здесь . Проверьте структуру папок и
package.json
для справки.Для развертывания я предлагаю вам развертывание heroku для запускаемых приложений. Вы можете найти HOWTO здесь . Это простое развертывание на основе git.
На этапе выполнения проекта просто установите среду
NODE_ENV=development
иnode app.js
. Вотapp.js
в вашем проекте.Вот относительная концепция для java и nodejs;
maven clean install
=>npm install
.m2
папка =>node_modules
(В папке проекта)mvn test
=>npm test
(тестовый раздел включенpackage.json
)junit
,powermock
, ... => мокко , узел-блок , ...Spring MVC
=> Express.JSpom.xml
=>package.json
import package
=>require('module_name')
источник
mvn clean install
создает связанный файл .war, который можно легко развернуть на любом сервере в мире иjava -jar *.war
запускать на нем. Но как я могу создать связанный файл для моего проекта узла !! и как я могу выполнить это на сервере !!Да, спецификация пакетов CommonJS :
На ваш следующий вопрос:
Я поддерживаю предложение Хусейна о развертывании на Heroku для производства. Для разработки и постановки я использую Node-Appliance с VirtualBox и Amazon EC2 соответственно:
Ваше веб-приложение не станет файлом
exe
.источник
Надеюсь, это может быть полезно для тех, кто ищет решение. Упаковка приложений Node js может быть выполнена с помощью команды "npm pack". Она создает zip-файл вашего приложения, который можно запускать в производственной / промежуточной среде.
источник
несколько способов приблизиться к этому:
Вставьте свой код в репозиторий Git, исключив все, что не является вашим кодом (
node_modules/**
), затем загрузите его в свою промежуточную среду, запустите,npm install
чтобы восстановить все зависимостисоздайте из него пакет NPM, установите его через
npm
промежуточную среду (это также должно позаботиться обо всех зависимостях)вручную скопируйте / ssh файлы в промежуточную среду (это можно автоматизировать с помощью
Grunt
), чем восстановить ваши зависимости с помощьюnpm
источник
Я использовал модуль zeit pkg. Он может создавать кроссплатформенные продукты для linux / win / macos. Фактически использовал его в продакшене и отлично работает без каких-либо проблем.
Он принимает все сценарии js и упаковывает их в один файл.
Я использовал его потому, что он помогает защитить ваш исходный код. Таким образом, в производственной среде клиента они будут иметь доступ к приложению, но не к исходному коду.
Также одним из преимуществ является то, что в производственной среде вам фактически не нужно, чтобы заказчик устанавливал node.js, поскольку двоичные файлы node также упаковываются внутри сборки.
https://www.npmjs.com/package/pkg
источник