我对AWS Bean秸秆部署的总体工作流程很好奇。我假设它在某个时候运行npm,以便将包安装到服务器上。但我只是想知道AWS Bean秸秆是否使用最新的“npm安装--生产”命令来安装软件包。目前,我有一个packages.json文件,如下所示,如果可能的话,希望确保只安装依赖项,而不安装devDependencies。
"dependencies": {
"express": "3.4.4",
"jade": "*",
"restify": "~2.6.0",
"assert": "~1.0.0",
"orchestrate": "0.0.2",
"chance": "~0.5.3"
},
"devDependencies": {
"mocha": "~1.15.1"
}发布于 2013-12-12 22:19:08
目前,弹性豆柄环境不带npm install标志就运行--production。在导出开发人员提供的任何env自定义(即环境选项设置)之前,在/opt/elasticbeanstalk/containerfiles/ebnode.py的实例上会发生这种情况,这意味着在EB环境的配置中设置NODE_ENV=production也不会阻止处理devDependencies。
发布于 2014-03-06 22:12:25
如果设置环境变量npm install,您可以让AWSElasticBean秸秆在生产模式下运行NPM_CONFIG_PRODUCTION=true。您可以通过弹性豆柄网络控制台来完成这一任务。
或者,将以下文本保存到项目根目录中名为.config的目录中的任何带有后缀.ebextensions的文件中,您无需每次在web控制台中设置它们,就可以完成相同的任务:
option_settings:
- option_name: NPM_CONFIG_PRODUCTION
value: true注意:确保您使用的是空格,而不是制表符,因为它是YAML格式。
我发现在t1微环境中更新新的node.js代码的时间从5分钟缩短到了90秒,因为它没有安装所有的devDependencies,比如咕噜、业力、摩卡等等。
发布于 2017-07-23 15:19:56
正如@etreworgy的评论所指出的,在ElasticBean茎Node的新版本中,配置已经发生了变化。
通过在EC2实例中运行,您可以检查当前行为:
cat /opt/elasticbeanstalk/containerfiles/ebnode.py | grep -A 5 PRODUCTION从今天起,它将返回:
if 'NPM_USE_PRODUCTION' not in npm_env:
npm_env['NPM_USE_PRODUCTION'] = 'true'
if npm_env['NPM_USE_PRODUCTION'] == 'true':
print 'Running npm with --production flag'
check_call([npm_path, '--production', 'install'], cwd=app_path, env=npm_env)
check_call([npm_path, '--production', 'rebuild'], cwd=app_path, env=npm_env)
else:
print 'Running npm without --production flag'因此,目前,它使用npm install --production by 默认。
对于那些想要禁用它的人(就像我进入这个答案时一样),您必须在项目根目录下的.ebextensions文件夹中创建一个.ebextensions(其中anything指的是任何内容;节点、npm,随您所需),内容如下:
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: NPM_USE_PRODUCTION
value: falsehttps://stackoverflow.com/questions/20552373
复制相似问题