当我将代码推送到OpenShift时,看起来它正在安装我的devDependencies
,其中永远。我真的很想设置它,所以它只会安装dependencies
(通过--production
标志运行)。有没有办法做到这一点?
答案 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)
创建.npmrc
文件夹所在的node_modules
文件。
使用text-editor
打开它并将其添加到其中:
production = true
P.S。没有分号或任何其他字符
这将确保devDependencies
服务器上未安装OPENSHIFT