在OpenShift上运行npm install –production

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

您可以通过将NPM_CONFIG_PRODUCTION环境variables设置为“ true ”来使用--production标志来告诉npm安装。

下面是一个适用于现有应用程序的例子:

 rhc env set NPM_CONFIG_PRODUCTION="true" 

或者,您可以将此variables设置为您的初始应用程序创build步骤的一部分:

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

find一种方法来指定它在源代码而不是在创build应用程序。 对env var的好处是,它适用于所有启动应用程序的方式,包括“在OpenShift上启动”button。

创build一个.openshift/action_hooks/pre_build文件:

 #!/bin/bash # This makes npm not install devDependencies. echo 'Enabling npm production' echo 'production = true' >> $OPENSHIFT_REPO_DIR/.npmrc 

而已! 我已经testing过,它确实会影响这个版本的npm,如果将来删除这个钩子,那么.npmrc会消失。

(显然,我也可以通过简单地将.npmrc添加到我的repo中来实现,但不想影响检查源代码和运行npm install ,而只是在OpenShift上如何工作。)

看起来唯一的解决办法是更新墨盒本身。 npm install命令位于盒式磁带的bin / control文件夹中。 同时,它已经在wshearn / openshift-origin-cartridge-nodejs的原始github仓库中修复,所以你可以从github安装而不是使用Quickstart。

  1. .npmrc文件夹所在的node_modules创build一个.npmrc文件。

  2. 用你的text-editor打开它,并添加到它:

    production = true

PS没有分号或任何其他字符

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