Когда я нажимаю свой код на OpenShift, он выглядит как устанавливающий мой devDependencies
, который принимает навсегда. Мне бы очень хотелось настроить его, чтобы он установил только dependencies
(запустив флаг --production
). Есть ли способ сделать это?
Запустить npm install --production на OpenShift
Ответ 1
Вы можете указать npm для установки с использованием флага --production
, установив переменную среды NPM_CONFIG_PRODUCTION
в значение "true
".
Вот пример, который должен работать для существующих приложений:
rhc env set NPM_CONFIG_PRODUCTION="true"
Или вы можете установить эту переменную в качестве части начального шага создания приложения:
rhc app create myapplication nodejs-0.10 NPM_CONFIG_PRODUCTION="true"
Ответ 2
Найден способ указать его в источнике, а не во время создания приложения. Выгода (для меня) над env var заключается в том, что она применяется ко всем способам запуска приложения, включая кнопку "Запуск на OpenShift".
Создайте файл .openshift/action_hooks/pre_build
:
#!/bin/bash
# This makes npm not install devDependencies.
echo 'Enabling npm production'
echo 'production = true' >> $OPENSHIFT_REPO_DIR/.npmrc
Что это! Я тестировал, и это влияет на npm для этой сборки, и .npmrc исчезает, если вы удалите этот крюк в будущем.
(Очевидно, я мог бы также достичь этого, просто добавив .npmrc
к моему репо, но не хочу влиять на людей, проверяющих источник и запуск npm install
, только то, как он работает на OpenShift.)
Ответ 3
Похоже, единственным решением является обновление самого картриджа. Команда установки npm находится в папке с картриджем/управляющей папкой. Между тем, он был исправлен в происходящем github repo в wshearn/openshift-origin-cartridge-nodejs, поэтому вы можете просто установить из github, а не использовать Быстрый старт.
Ответ 4
-
Создайте файл
.npmrc
, где находится папкаnode_modules
. -
Откройте его с помощью
text-editor
и добавьте его в него:production = true
P.S. точки с запятой или любые другие символы
Это гарантирует, что devDependencies
не установлены на сервере OPENSHIFT