在OpenShift上运行npm install --production

时间:2013-12-21 22:19:11

标签: node.js npm openshift

当我将代码推送到OpenShift时,看起来它正在安装我的devDependencies,其中永远。我真的很想设置它,所以它只会安装dependencies(通过--production标志运行)。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:17)

您可以通过将--production环境变量设置为" NPM_CONFIG_PRODUCTION"来告诉npm使用true标记进行安装。

以下是适用于现有应用程序的示例:

rhc env set NPM_CONFIG_PRODUCTION="true"

或者,您可以将此变量设置为初始应用创建步骤的一部分:

rhc app create myapplication nodejs-0.10 NPM_CONFIG_PRODUCTION="true"

答案 1 :(得分:3)

找到一种在源代码中指定它的方法,而不是在应用创建期间。 对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上运行。)

答案 2 :(得分:2)

看起来唯一的解决方案是更新墨盒本身。 npm install命令位于盒式磁带的bin / control文件夹中。同时,它已在originating github repo at wshearn/openshift-origin-cartridge-nodejs中修复,因此您只需从github安装而不是使用Quickstart。

答案 3 :(得分:2)

  1. 创建.npmrc文件夹所在的node_modules文件。

  2. 使用text-editor打开它并将其添加到其中:

    production = true

  3. P.S。没有分号或任何其他字符

    这将确保devDependencies服务器上未安装OPENSHIFT