首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在部署Nodejs应用程序时,AWS Bean秸秆如何使用NPM?

在部署Nodejs应用程序时,AWS Bean秸秆如何使用NPM?
EN

Stack Overflow用户
提问于 2013-12-12 19:24:10
回答 4查看 14.9K关注 0票数 23

我对AWS Bean秸秆部署的总体工作流程很好奇。我假设它在某个时候运行npm,以便将包安装到服务器上。但我只是想知道AWS Bean秸秆是否使用最新的“npm安装--生产”命令来安装软件包。目前,我有一个packages.json文件,如下所示,如果可能的话,希望确保只安装依赖项,而不安装devDependencies。

代码语言:javascript
复制
"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"
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-12 22:19:08

目前,弹性豆柄环境不带npm install标志就运行--production。在导出开发人员提供的任何env自定义(即环境选项设置)之前,在/opt/elasticbeanstalk/containerfiles/ebnode.py的实例上会发生这种情况,这意味着在EB环境的配置中设置NODE_ENV=production也不会阻止处理devDependencies。

票数 5
EN

Stack Overflow用户

发布于 2014-03-06 22:12:25

如果设置环境变量npm install,您可以让AWSElasticBean秸秆在生产模式下运行NPM_CONFIG_PRODUCTION=true。您可以通过弹性豆柄网络控制台来完成这一任务。

或者,将以下文本保存到项目根目录中名为.config的目录中的任何带有后缀.ebextensions的文件中,您无需每次在web控制台中设置它们,就可以完成相同的任务:

代码语言:javascript
复制
option_settings:

  - option_name: NPM_CONFIG_PRODUCTION
    value: true

注意:确保您使用的是空格,而不是制表符,因为它是YAML格式。

我发现在t1微环境中更新新的node.js代码的时间从5分钟缩短到了90秒,因为它没有安装所有的devDependencies,比如咕噜、业力、摩卡等等。

票数 24
EN

Stack Overflow用户

发布于 2017-07-23 15:19:56

正如@etreworgy的评论所指出的,在ElasticBean茎Node的新版本中,配置已经发生了变化。

通过在EC2实例中运行,您可以检查当前行为:

代码语言:javascript
复制
cat /opt/elasticbeanstalk/containerfiles/ebnode.py | grep -A 5 PRODUCTION

从今天起,它将返回:

代码语言:javascript
复制
        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,随您所需),内容如下:

代码语言:javascript
复制
option_settings:
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: NPM_USE_PRODUCTION
      value: false
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20552373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档