Запустить npm install --production на OpenShift

Когда я нажимаю свой код на OpenShift, он выглядит как устанавливающий мой devDependencies, который принимает навсегда. Мне бы очень хотелось настроить его, чтобы он установил только dependencies (запустив флаг --production). Есть ли способ сделать это?

Ответ 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